Search This Blog

Thursday, 11 January 2018

Writing a Puppet External Node Classifier in Python

I recently had cause to try and troubleshoot someone's issues with node classification in their Puppet Enterprise infrastructure, and found that a faulty External Node Classifier configuration was at the root of it.

This got me thinking about whether it is feasible to write an ENC in Python, without it messing up the entire Puppet Enterprise setup, so I thought I'd give it a try.

First things first, I should warn you that using an ENC on Puppet Enterprise is entirely possible, but not covered by your Support agreement. If you have issues with node classification, and you are using any ENC, you will be politely told that you're on your own. As well as this, you do render parts of your PE Console redundant, although the reporting sections will still be entirely functional and valid.

With that out of the way, here is what I did. I hope it may be useful to someone else starting out on writing an ENC in Python.

I used a Vagrant install of PE 2017.2.2 on an Ubuntu 14.04 server, simply because setting up Python3 on a CentOS box is just too much trouble, and Ubuntu has it pre-installed. You will also need to have the Py-yaml Python module installed. Ensure the Puppet Master node is fully functional before you start, and it is useful if you also have an Agent node spun up. In my lab, the Master's FQDN was pe-201722-master.puppetdebug.vlan and the Agent's FQDN was pe-201722-agent.puppetdebug.vlan

I used the Puppet documentation at https://puppet.com/docs/puppet/5.3/nodes_external.html as a starting point and my completed ENC can be seen at https://gist.github.com/spynappels/41699b5bcc63a742084d5fb3d023c6dc.

However, let me take you through some of the specifics.
I followed the instructions in the docs to enable the ENC, but I found that I also had to add the following keys to the common.yaml file in the production environment's hieradata directory:

puppet_enterprise::profile::master::classifier::node_terminus: 'exec'
puppet_enterprise::puppet_master_host: 'pe-201722-master.puppetdebug.vlan'

I have commented the Python code to illustrate what each section does and why I've included some of the things I have. For example, in the section below, I have sliced up the FQDN to extract only the specific substring that describes the nodes role, and then added this to the parameters dictionary inside the classification dictionary:

# Parameters section
# This sets the node_role based on a section of the hostname
classification['parameters'].update({'node_role':node_fqdn.split(".")[0].split("-")[-1]})

The ENC script works entirely as expected now, and any changes made in Hiera to any of the puppet_enterprise profile parameters to change the default behaviour of any of the PE elements are propagated as expected and work. However, there are a few observations I have based on this test.

  • This works really well if you have a bunch of data such as server role, environment and such encoded into the hostname or FQDN of your nodes somehow. If you want to use facts to classify nodes, like the "using a fact to create a rule for a Node Group in the PE Console" workflow, it is not going to work unless you find a way to allow the ENC script to also query against the PuppetDB Query API. I believe this is possible, but not with the ENC script in the Github Gist link above.
  • Using an ENC may allow a slightly more automated way of classifying nodes if your workflow uses hostnames to describe node roles etc., but without a knowledge of the language the ENC is written in (Python3 in this case) it is not nearly as easy to change the classification rules. The PE Console is pretty Puppet Noob friendly, and as it is supported by Puppet Support, it is easier to get help in making changes to your classification rules. 
  • The choice of language in which the ENC is written may have implications for your sysadmins or Puppet admins, should the person who wrote the ENC decide to move on from your organisation. 
All in all, using an ENC to manage your classification is a good strategy if you are comfortable with the limitations it imposes. I found this a valuable lesson in thinking about classification, and applying Python principles that I'm comfortable with to Puppet node classification which I've normally done using either the PE Console or Hiera. Hopefully it may prove useful to someone else starting out on the same path.

Wednesday, 14 May 2014

Citrix Receiver on Ubuntu 14.04

Woohoo, got my new work laptop today, a Lenovo Thinkpad T430.

I didn't even boot into Windows, just stuck the Ubuntu CD in and installed 14.04 64 bit.

I now have it pretty much set up the way I like it, but Citrix Receiver (of all things!) gave me some troubles and I thought I'd better document what I did for next time I decide to re-install.

Firstly, the Ubuntu Wiki page on installing ICA Client is very good. It can be found at https://help.ubuntu.com/community/CitrixICAClientHowTo and there is even a section on installing Citrix Receiver 12.1 on 64 bit 14.04. It is a great shame that Citrix have created a .deb which will not install, and which needs to be fixed and repackaged before it is useable, but the instructions are simple to follow, and it installed correctly when I followed them.

The the next gotcha hit. Open XenDesktop, and it opens full screen. Even when Windowed mode is selected in the ICA Client configuration. That's a problem right there, as there is no simple way of getting back to your Ubuntu Desktop, other than using some extra key combos or logging off the XenDesktop. Neither of these make for an easy or productive work experience.

I asked around on the net and found very little help, except in the Citrix community forums, where one guy suggested I set the desired Horizontal and Vertical resolution globally. This worked, and I thought I'd document it here too, if only for my own use in the future.

The file I edited to force the resolutions I wanted was:

/opt/Citrix/ICAClient/config/All_Regions.ini

and the values I changed were from

DesiredHRES=*
DesiredVRES=*


to

DesiredHRES=1024
DesiredVRES=768

This means that when I open my XenDesktop now, it opens in a window 1024x768 which I can then maximise like any other window. This means I can put the maximised XenDesktop window in one workspace and my other stuff in the other 3 workspaces and easily flick back and forth between them.

Et voila! Productivity restored!

Thursday, 8 May 2014

I want to break out, I want to breeeeaaaaaak out.....

I know, I know, the worst Queen pun ever.
But with the Raspberry Pi, one of the coolest things is that you can use the GPIO pins to interface with other bits of electronics, and my second Pi (the first is my Media Centre at home running RaspBMC) is now set up with a breakout board and case to make it a little more robust.


Not sure why this uploaded upside down....
I got the breakout board from RasPi Mart on Ebay (http://www.ebay.co.uk/itm/271455580745) and it is actually a really good deal for around 6GBP.

Here is a closeup:

You will notice that there are 8 GPIO pins broken out (P0 to P7) as well as the UART, I2C, SPI, etc. I found it difficult to find detailed information on which pin on the breakout corresponds to which BCM GPIO pin. I traced them, and being the nice sort of fellow I am, I'll detail them for you below. Bear in mind this is a Rev 2 Pi and this board is labelled "Raspberry Pi GPIO Extension Board V2.2", so if you don't have those precise items, YMMV.


Breakout PinBCM PinNotes
P0GPIO17
P1GPIO18Also PWM pin.
P2GPIO27Was GPIO21 on Rev1 Pi.
P3GPIO22
P4GPIO23
P5GPIO24
P6GPIO25
P7GPIO4Also the 1Wire pin by default.
I2C SDAGPIO2Was GPIO0 on Rev1 Pi.
I2C SCLGPIO3Was GPIO1 on Rev1 Pi.
UART TXDGPIO14
UART RXDGPIO15
SPI MISOGPIO9
SPI MOSIGPIO10
SPI SCLKGPIO11
SPI CE1GPIO7
SPI CE0GPIO8

I hope the above is useful to you, and helps you get the most out of your Raspberry Pi GPIO experimenting!

Wednesday, 7 May 2014

Time Flies.....

Wow.

Has it seriously been a year? Time really has flown by.....

So to recap, still a penguin head, still working at Citrix, still liking my job, and still left with too little time to do what I want after work, family, etc.

Couple of things you'll hear me talking about over the next while though, Arduino and Raspberry Pi.

Been doing a fair bit of stuff with Arduino over the last few months, which has taught me a lot about using libraries, general electronics, I2C, SPI, LCD screens, accelerometers, relays and the like, but this has led me in a great big circle back to the Raspberry Pi, and more specifically what it can do with it's GPIO pins.

Expect to hear a fair bit about my struggles over the next little while, as I attempt to get my head around Python and using it to make the Pi do great things in the real world. At least, that's the idea.

Anyway, it's good to be back, and I'll be a little more diligent in keeping up to date in the future....

Tuesday, 21 May 2013

Honey I'm hoooome!

Howdy,

I'm back! Work has been particularly busy this last while and I've had a few other things to sort out, but I'm back into waffle mode, and for the odd person who stumbles across my meandering posts, I'm sorry but there will be more of them.

So, to take stock:
Little has changed. I'm still using Ubuntu with xmonad for my everyday work, I'm still working with RHEL and Solaris in my work at Citrix and I'm still kept busy by my two boys, at 3 1/2 and 1 1/2 they are hard work but lots of fun.

I have been bitten by a bug though. On holiday I tried sailing for the first time ever, having spent a huge amount of time on various powerboats since I was a child, and I'm hooked on the idea of getting places on water using only the wind. Expect to hear more about this as time goes on...

Anyway, I'll keep posting, and probably no-one will keep reading, but for odd person that does, thanks, and feel free to tell me how much you (don't) like my ramblings.

Thursday, 10 January 2013

A Tale of 2 Disks

I'm sorry if you were waiting for part 2 of the LVM saga, it will come, but in the meantime, I've something else to talk about.

I had a normal 500GB hard drive in my work laptop and I was reasonably happy with the performance, with Ubuntu 12.04 booting to an xmonad Window Manager, it took about 55-60 seconds from power button to login window.

However, some of my work colleagues have put SSDs into their computers, both desktop and laptop, and that gave me the idea to try that too.

Because I do a lot of work on my XenDesktop at work, and I also extensively use ShareFile and Dropbox, the size of the SSD was less important to me than the reviews it received. I store a lot of the non sensitive stuff I use on some form of cloud service, so a smaller, faster disk was fine by me.

I got a 128GB Crucial M4 SSD and installed Ubuntu 12.04 on it, again using xmonad as my WM. And boy, does it make a difference! Boot from power on to login screen now takes 19 seconds. Copying some large files from my backups to the new system was way faster than I'd dared hope, in fact copying about 6GB of files, assorted between large and small files, took around 3 minutes. I can tell you that I was very happy.

In general use I find things are faster too, opening 500MB+ files in Wireshark is so much quicker, file transfers from anywhere are so much quicker and generally the whole system feels more responsive.

So, if you've been thinking about SSDs, stop it! Get yourself one and see what a difference it really makes. With prices down so low now, there is no real reason to not use one for the OS of a computer. Even if the data is stored elsewhere, having the OS and some programmes you use a lot on an SSD really does make a difference. Just remember to enable the TRIM feature....

Monday, 7 January 2013

Fun with LVM (Part 1)

Ok, I lied a little, it's not really a lot of fun, but I'm hoping to create something useful (to me at least) here.

I don't work with LVM extremely frequently, it's one of those things I set up and tend to forget about, so when I need to make some changes, I find I have to look at the same old man pages again and again. I thought I could make my life easier and create a single post with most of the information I need in one place.

What makes this blog post different to any of the other millions already out there, I hear you say? Nothing, except that I'll find this one easier to find and hopefully writing it all up will cement it in my own head. So, here goes:

My lab has the following layout, all created in a VM:
HDD1   8GB       250MB /boot | LVM PV1 | 1GB swap
HDD2   8GB       LVM PV2
HDD3   15GB     MDRAID Disk1
HDD4   15GB     MDRAID Disk2
HDD5   15GB     MDRAID Disk3

The three mdraid disks are combined into a 30GB RAID5 volume, with a single LVM PV (LVM PV3) created on top.

PV1 and PV3 added to Volume Group 1 (VGlab) with separate LVs for /, /var, /home and /var/log with Ubuntu Server Edition 12.04 installed on top. LVM PV2 unused for now, and not all available spave in VGlab used.

So we have a server with the following output from df -h after a clean install:


stefan@lvm-lab:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/lab-os    4.7G  683M  3.8G  16% /
udev                  241M  4.0K  241M   1% /dev
tmpfs                 100M  292K   99M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  248M     0  248M   0% /run/shm
/dev/sda2             223M   25M  187M  12% /boot
/dev/mapper/lab-home  4.7G  198M  4.3G   5% /home
/dev/mapper/lab-var    14G  473M   13G   4% /var
/dev/mapper/lab-log   7.5G  257M  6.9G   4% /var/log
stefan@lvm-lab:~$


So we can then start using some of the commands to see what's going on and making some changes.

The first command which is useful is pvdisplay which lists out the physical volumes present in the physical machine. Bear in mind that this will list any volumes, physical or RAID, which have a LVM volume flag set. On my lab, I get the following output:


stefan@lvm-lab:~$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               lab
  PV Size               29.99 GiB / not usable 0
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              7678
  Free PE               0
  Allocated PE          7678
  PV UUID               Marv0q-qLZJ-HWOt-mVUC-FKoS-zqT8-K5C214
 
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               lab
  PV Size               6.84 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              1749
  Free PE               1560
  Allocated PE          189
  PV UUID               rIZb3g-GZdJ-yuGY-UC2k-iG0G-Q4f3-2TmS9R
 
  "/dev/sdb1" is a new physical volume of "8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name            
  PV Size               8.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jgePi7-SkVo-7kp2-KUdQ-Ajel-MQFU-Ubs4PH
 
stefan@lvm-lab:~$


You'll note that the first entry is the RAID array and the second is the LVM section of the first disk. You'll also note that the other 8GB disk is listed, even though it has not been added to a VG yet.

A similar command vgdisplay can be used to list all Volume Groups, in this lab I only haver a single VG but this would list all VGs present:


stefan@lvm-lab:~$ sudo vgdisplay
  --- Volume group ---
  VG Name               lab
  System ID          
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               36.82 GiB
  PE Size               4.00 MiB
  Total PE              9427
  Alloc PE / Size       7867 / 30.73 GiB
  Free  PE / Size       1560 / 6.09 GiB
  VG UUID               BgXqr1-gDCJ-OLzC-dYgV-2qa1-nzL2-95jpZx
 
stefan@lvm-lab:~$


As expected, there is also a similar command to view the Logical volumes in the VG as well, lvdisplay.


stefan@lvm-lab:~$ sudo lvdisplay
  --- Logical volume ---
  LV Name                /dev/lab/os
  VG Name                lab
  LV UUID                fYXl5R-NlHb-44Gs-rQWh-IiRE-3aaQ-fHusdk
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                4.66 GiB
  Current LE             1192
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     4096
  Block device           252:0
 
  --- Logical volume ---
  LV Name                /dev/lab/home
  VG Name                lab
  LV UUID                GUGN3K-ICHB-VnvE-GvcK-16nP-Q20e-pyAqse
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                4.66 GiB
  Current LE             1192
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     4096
  Block device           252:1
 
  --- Logical volume ---
  LV Name                /dev/lab/log
  VG Name                lab
  LV UUID                OagOZY-fvan-ji02-92UA-bv2r-EQuS-SEebSH
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                7.45 GiB
  Current LE             1907
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     4096
  Block device           252:2
 
  --- Logical volume ---
  LV Name                /dev/lab/var
  VG Name                lab
  LV UUID                0wztzb-mQOj-5Gp8-L21T-TIKP-1gcT-cermwT
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                13.97 GiB
  Current LE             3576
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     4096
  Block device           252:3
 
stefan@lvm-lab:~$


So there is a pattern emerging here, the commands are generally the same, just the prefix of pv-, vg- and lv- changes. There are also a number of switches which can be used to shape how each command runs more intelligently. For example, to see information on only a single Logical Volume, with units in kB, you would run the following:

stefan@lvm-lab:~$sudo lvdisplay --units K /dev/lab/var

The man page for each command does a good job of explaining these various switches and options.

In the next installment, I'll be looking at how a series of commands can be used to interact with the LVM elements, such as adding PVs to an existing or new VG, altering the size of a VG, altering the size and/or number of LVs in a VG, and also look at some gotchas when it comes to the filesystems on the Logical Volumes.

Friday, 4 January 2013

Going Minimalist with xmonad

You may have read in my ramblings how I am one of these people who actually likes Unity on Ubuntu and find it lets me get more stuff done. Well, I still think that, but in the last few days I've been tempted into looking elsewhere for some thing different...

One of the guys I work with runs Arch Linux and uses xmonad as his window manager. No, I'm not going down the painful path of Arch, but I have decided to take a look at xmonad as an alternative WM on my (Ubuntu running) work laptop. (Thanks Michal....)

Talk about a learning curve! It is very different to Unity in that it is minimalist, has no eye candy and uses the keyboard much more than the mouse. But what a fast and responsive way of working it has proved to be!

Installation was a breeze

sudo apt-get install xmonad

and following the 2 links here and here made the initial config reasonably easy. Here are my xmonad.hs and .xmobarrc config files:

xmonad.hs

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO
myWorkspaces = ["1:terminal","2:web","3:XenDesktop","4:four","5:five","6:six","7:seven","8:eight","9:nine"]
main = do
    xmproc <- spawnPipe "/usr/bin/xmobar /home/stefan/.xmobarrc"
    xmonad $ defaultConfig
        { manageHook = manageDocks <+> manageHook defaultConfig
        , workspaces = myWorkspaces
        , layoutHook = avoidStruts  $  layoutHook defaultConfig
        , logHook = dynamicLogWithPP xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50
                        }
        }


.xmobarrc

Config { font = "-*-Fixed-Bold-R-Normal-*-13-*-*-*-*-*-*-*"
       , bgColor = "black"
       , fgColor = "grey"
       , position = TopW L 90
       , lowerOnStart = True
       , commands = [ Run Network "wlan0" ["-t","Wireless: Rx<rx>|Tx<tx>","-S","True"] 10
                    , Run MultiCpu ["-t","Cpu: <autototal>","-L","30","-H","60","-h","#FFB6B0","-l","#CEFFAC","-n","#FFFFCC","-w","3"] 10
                    , Run Memory ["-t","Mem: <usedratio>%"] 10
                    , Run Swap [] 10
                    , Run Date "%a %b %_d %l:%M" "date" 10
                    , Run StdinReader
   , Run Network "eth0" ["-t","Wired: Rx<rx>|Tx<tx>","-S","True"] 10
                    ]
       , sepChar = "%"
       , alignSep = "}{"
       , template = "%StdinReader% }{ %multicpu% | %memory% * %swap% | %eth0% | %wlan0% | <fc=#ee9a00>%date%</fc> "
       }


These 2 files will provide a reasonable starting point for anyone wanting to try this out.



I have 2 specific comments though:

Firstly, I'd forgotten how much I love tinkering with Linux. Using it every day to put in a full day's work is good, especially compared to the Windows alternative, but it's really nice to tinker with a new setup and alter it to do exactly what you want. In my case it involved writing a small script to start trayer, a small tray utility to display applets like those in the system tray, and some applets which I use a lot like the Network Manager and Bluetooth applets.

#!/bin/bash

# Script to start trayer and required applets
trayer --edge top --align right --SetDockType true --SetPartialStrut true  --expand true --width 10 --transparent true --tint 0x191970 --height 13 &
sleep 3
nm-applet --sm-disable &
sleep 3
bluetooth-applet &
sleep 3
dropbox start
exit 0


This script is called from a small wrapper script which sets my display options to my work configuration, with an external monitor to the right of my laptop.

#!/bin/bash

xrandr --output LVDS1 --mode 1600x900 --output VGA1 --mode 1680x1050 --right-of LVDS1
/home/stefan/.tray.sh
exit 0


I also had to tweak some other settings to get xmobar to display the data I wanted to see in the status bar. Ok, this is all done automatically in a full desktop WM like Unity, but I enjoyed tinkering, tweaking and ending up with a desktop that works for me.

Secondly, it is amazing just how much my work is streamlined using a tiling window manager and using keystrokes to flick between desktops, monitors and open windows. It is difficult to imagine the difference made by not moving my hands from keyboard to the mouse and back as much. I still use the mouse in browser windows etc. but for the majority of my work I can get away with only using my keyboard.

I guess in short, it has once again been brought home to me how versatile Linux is, and how easy it is to customise to your own requirements. If you don't like one Desktop Environment, use another, just be comfortable with whatever you use.

I'll be using Unity and xmonad interchangeably from now on...

Friday, 28 December 2012

Dropbox and the art of blagging.

In the last few months, I've found myself using Dropbox more and more. It is very useful for sharing files between my laptop and my work XenDesktop, as well as between the Windows (I know, I know) and Ubuntu partitions on my work laptop. I also use it to share information with a small team of people I work with closely on some charity projects, and it really has been an excellent help for that.

Recently, I've found myself using in a slightly different way, which has worked very well also. I've been accessing my Dropbox files from my Android devices, both from my phone and from my Nexus 7. This has been particularly useful for 2 different reasons. First, having extra online storage space meant I was happy enough getting the 16GB Nexus instead of the 32GB one. This is because a lot of the files I will not use regularly can quite happily live in a Dropbox folder and grabbed when required, rather than taking up space on my devices. I never fill my phone 16GB SD card more than 40% full, so I figured I'd be fine with 16GB of storage on the Nexus.
Secondly, I've been delighted by how some of the apps I use regularly on both the phone and the tablet can access the Dropbox folders directly, without having to store the files locally at all. DroidEdit, ezPDF Reader Pro and ES File Explorer all allow me to use items from Dropbox directly. I have to say that the API provided by Dropbox seems to work very well, and makes it easy for me to work the way I want to too.

So this is where the blagging part comes in. I can always do with more Dropbox storage and, short of paying for it monthly, the only way I have left of getting it is by getting others to sign up to Dropbox using one of my invites. This is of course somewhat symbiotic, as they also get more space if they sign up with my invite, but if any of you haven't yet signed up to Dropbox and would like to, getting an extra 500MB of storage in the bargain, please use the following invite link and get me some more space too.

http://db.tt/spKMpILz

Thanks muchly!

Tuesday, 25 December 2012

Nexus 7, Bluetooth devices and useful Apps

Ok, so anyone who knows me will know I'm a happy Android user, and the Nexus 7 has only cemented this position. All I want to do today is share some of the things I have done to make the Nexus more useful and work even better for me. I hope these notes may help you as well.

The first thing I would recommend is getting a Bluetooth keyboard and mouse, if you are likely to be doing much in the way of text entering (like blogging or coding for example). I got both, and they really make a difference when using the tablet as a content creating device. They also make the Citrix Receiver and my XenDesktop work really well when I'm on call and need to be able to check things quickly. It won't replace my laptop, but means I don't have to have it on all the time.
Pairing the tablet and the keyboard and mouse was painless, and to borrow a phrase from our fruit loving brethern, "it just works".

Now, I very rarely feel the need to buy apps for a mobile platform, whether it was Apple previously or Android now, the free versions usually are fine for me, but I have bought "Pro" versions of some Android apps, because they really are that good. As a result, I'd heartily recommend the following apps from the Play Store:


  • ezPDF Reader Pro - This is easily the best PDF reader I've used for pretty much any platform, and using it on the tablet is great for annotating PDFs, making notes in margins etc. It also has some support for epub ebooks, so definitely worth the few pounds I paid for it.
  • DroidEdit Pro - A very neat text editor with syntax highlighting for many different scripting languages as well as html etc. The reason I paid for the pro version was that it supported direct Dropbox access, which I find very useful.
  • External Keyboard Helper Pro - I'm using this to make sure that the Bluetooth keyboard is recognised as an en-gb keyboard rather than the default en-us that Android uses. It also allows custom keymaps to be added and to map keys to specific functions, which can be helpful.
  • Hacker's Keyboard - A soft keyboard which is much better than the Android stock ones. This app is free, but my soft keyboard of choice when I'm not using the BT keyboard.
The other really good thing about the Play Store is that when I bought each app, I was able to use it on all my Android devices, they were not tied to one device or another. This meant that I was able to pair the Bluetooth keyboard with my HTC Desire S work phone and use External Keyboard Helper to set it to en-gb and send text messages using the keyboard. I know, geeky and probably pointless, but it's nice to do it if you can, right?


Documentation, documentation, documentation....

I've been struggling with the lack of proper documentation for a LSI RAID controller I am using in a server at work. While most of the RAID configuration is done through a wrapper script in the application running on the server, when this goes wrong, I'm supposed to know how to fix this using the underlying MegaCLI. As a result, I've been hunting for specific information on the MegaCLI syntax....

Oh boy, what a task.

Try Googling MegaRaid or MegaCLI, and you'll be amazed at the number of results. The problem is that they are mostly blog posts ranging from simply mentioning the documentation deficiencies, through complaining about the lack of documentation, to venting spleen at the lack of documentation. Many document specific commands which they needed and which they worked out by trial and error, and some have reasonably comprehensive reference guides or cheat sheets.

My problem is that I think this should be unnecessary. Coming from a Linux/Unix perspective, where man pages are only a few keystrokes away, it seems odd that there is not something like this available for what is an Enterprise grade Storage Controller. I did finally find a 32MB PDF which is a software guide, and this PDF has a reasonable chapter on the CLI tool, but for a tool designed to be used from the command line, some command line help might really be useful.

I've decided that, rather than create another blog post complaining, I would start work on a post which lists those of the commands which I've used and try to explain the syntax somewhat, so that maybe my work can be of some use to someone else. If you're interested, keep your eyes open for a post on this in the near future.

Friday, 21 December 2012

What a Year!

Well, it's almost the end of the year,and what a year it's been. I started it working for Bytemobile, now I'm a Citrite, I started it running Windows exclusively at work and finished it running Ubuntu exclusively and using a Xen Desktop for the only 2 Windows applications I have to use. I will post on that later, but it's worked very well.

All in all though, it's been a busy year, with ups and downs like everybody else, but I feel it's been a good one, with many challenges at home and at work and lots of lessons learned.

I've got more experience on Solaris, including hacks and tips to keep my labs running despite the lowly hardware it lives on. I've had to seriously improve my scripting using Bash, and start learning Python. I've expanded my exposure to RHEL, building on my experience with Debian and Ubuntu, and I've got to work with some nice IBM hardware.

So, what is in store for next year?

Well, I'm hoping to be sponsored for, and gain, some industry standard certification, like LPI or RHCE. I also want to take on more responsibility for training and knowledge transfer in my areas of specialist expertise like our T2100 Caching Server. I would also like to take the next steps which would allow me to move along my career path.

Anyway, it's been a good year, here's hoping the next one is even better.

Saturday, 8 December 2012

All hail the Nexus 7

Hi all! I just wanted to share my experiences of getting a Nexus 7 and setting it up. This post is largely prompted by some posts on The Register forums on the subject of a comparison and review of tablets for Christmas. There were a lot of comments saying how much easier it is to set up multiple Apple devices compared to Android devices. As I don't have any Apple devices, I'm not claiming this is a comparison, it's just my experiences of setting up multiple Android devices.

I have had Android phones for quite a long time, but I have only just got a Nexus 7 16GB tablet. I have had 2 Googlemail accounts and an Exchange account set up on my phones, along with a number of apps and linked Dropbox and similar accounts.

When I powered up the Nexus 7 for the first time, it asked me for my main Googlemail account details. When I entered the info, everything synced to the Nexus immediately, including things like WiFi networks I'd joined on my phone. I was amazed that the tablet connected to the WiFi network at work.

When it comes to the apps I had installed on my phone (HTC Desire S), they all installed on the tablet with a single tap. The really good thing is that even the paid for apps just installed too, without any mention of the app being limited to a specific number of devices. They also scaled very well on to the tablet, with only the Norton VIP app, required for work, looking like it was blown up. All the other apps make full use of the extra screen real estate. There have been many comments about how the Android tablet apps are sorely lacking, but in my experience, I've had no problems and I'm very happy with how the apps look on the tablet.

All in all, the setting up process was very simple and although I have no experience with the Apple ecosystem, I can't see how it would be any simpler than my experience setting up my new Nexus 7.

Friday, 7 December 2012

Oh wow.....

Oh dear, was my last post really back in April?

Ok, I know no-one reads this drivel, but still, it is a very long time since I had time and/or inclination to commit my mental ramblings to, well if not actual paper, you get the drift...

So, what has happened? I got my Raspberry Pi and love it, I've been swallowed up by the megacorp that is Citrix, although I still do exactly the same job, I've got older and greyer sorry, balder, and I now have a Nexus 7. There, you're all caught up!

I do plan to post more regularly again, for no better reason than that it keeps me from shouting at random people walking by my desk. For example, I may post about my experiences with the Nexus 7, which I only got this week, or I may complain about the lack of sleep I'll be suffering from next week as I do a week on US timezone shifts or some other such mutterings as may spring to mind, but in any event, know this:

Gonzo is back and he's more opinionated than ever!

Thursday, 5 April 2012

Linux can cure a sweet tooth?

Well, it can if you take a helping of Raspberry Pi.....

I've put my name down for one of these incredible little machines and I cannot wait to get my hands on it. The idea of all that ARMy goodness in such a small package but with such huge possibilities positively makes my sweet tooth hurt just thinking about it.

The possibilities are legion, network media player plugged into the TV, small file server, IP camera when used with a webcam, home automation centre, the list just goes on and on. It really is a shame that the initial release is just one per person.

But one thing I hope it will also do is to allow me to introduce my boys to the possibilities and joys of tinkering. I know, they're still a bit small, but once they get a bit bigger, it will be great letting them mess about with simple programs and such, and letting them develop whatever geekiness they've inherited from me. Knowing they can't brick it is reassuring too, just re-imaging the SD card will take care of that. Not like when a certain un-named young muppet geek wannabe had to take his parents DOS dinosaur back to get it fixed AGAIN after wiping some incredibly important file or other. (I didn't have the installation media, it was a computer lent to us...oops)

Anyway, when I get my hands on it and have had some time to tinker, I'll report back and let you know how I've got on and what I've done with it. I will say this though, I think it could definitely be a revolutionary product, and if it rekindles young people's love of computing, hacking and generally messing about with computers, it would be cheap at twice the price.

Tuesday, 3 April 2012

Resurrection!

It's been a while, but I've been busy. I will try and keep more up to date now that life has settled down a bit and post more regularly.

So, to recap:

New job, all good, really enjoying it and fitting in well.

New(ish) baby, another boy so I have 2 boys to keep me busy now.

Some new skills, working with Solaris constantly now so I'm getting experience with Unix from another stable. I'm also working with Wireshark/t-shark a lot more which is really cool.

Less hair but more padding around the waist. The former I can do nothing about, but the latter is being worked on slowly.

So keep watching, and I'll get back to updating you with my inane drivel at more regular intervals.

Friday, 1 July 2011

Mother-in-Law Musings

The subject of mothers-in-law has got some publicity recently, what with the viral emails and comedians picking it up and running with it, but I guess I just wanted to add my tuppence worth, not to the email specific debate, but to the question of mothers-in-law.

I have one, so I can comment first hand. I goad her mercilessly about everything from her height to the size of her nose to the fact that she is getting old, and she gives as good as she gets, but it has never been malicious, and we do actually get on very well.

She bemoans the fact that she does not have "M-i-L power" over either me, or her other son-in-law, and we allow her to think she might have done at one stage, although to be honest, I was always more worried about my father-in-law to begin with.

But when it matters, it is great to know that she is there to help out when we need it. Recently, when my wife was ill and struggling with our 17 month old son, and I was unable to be as much help as I wanted to be because of my work schedule, she immediately hopped on a bus and travelled for 4+ hours next to an extremely smelly man to come and help out. She stayed for a week and nearly drove me bananas (!!!!) but I was very happy that we were close enough to my mother in law to ask for help, knowing that she would be up like a shot.

(I should add that my mother was very helpful too, and will be just as forthcoming when we need help, but sometimes a girl just wants her Mum around)

Anyway, whatever the perceived wisdom is about Mothers-in-Law, I wouldn't swap mine for all the tea in China. Irish whiskey might be a different matter, but that's another story.

Tuesday, 21 June 2011

Chrome is coming of age.

Just a little post today about Google Chrome. I have often complained to whoever will listen that I don't like the way Google is storing everything online, and I still am rather dubious about the ChromeOS idea, but the Chrome Browser is now my browser of choice on both Windows and Linux, (on Linux I use Chromium, same thing). The browsing experience is so much faster than Firefox 4, which feels very bloated now, and is much better than Internet Explorer 8.

I will try Firefox 5 when it is released, and Firefox still wins when it comes to the various add-ons that are available, but when Chrome finally has an add-on which allows GPG integration, I'll have no reason to use another browser other than to test.

I know this is probably the wrong place to ask, but can somebody please create an add-on for Chrome which will allow me to use GPG encryption and decryption? Ppplllleeeeeaaaasssseeee?

Thursday, 9 June 2011

I got it! I am now an Ubuntu Member!

Well, as I said in my last post, I was applying for Ubuntu Membership based on my activity in the Ubuntu Forums. I found out a day or so ago that I've been accepted along with 18 other active forum members.

Happy days!

I just need to continue my work now and maintain my activity levels as best I can, but I think it is a personal milestone for me.

Thanks to all who supported my application.

Friday, 3 June 2011

Ubuntu Community Involvement

Just recently, I've been looking at the community structure in Open Source development in general and Ubuntu in particular, and how users can get involved in helping out.

I have been active in the Ubuntu Forums for a long time now, specifically in answering questions and helping new users in the Security and Server Edition sub-forums. I got involved in this because the Ubuntu Forums helped me immensely when I started using Ubuntu, and then when I felt confident about the new skills I was developing, I wanted to help others who were in the same boat as I had been. I still ask questions too, the forums are a fantastic resource, but it is also very satisfying to be able to help people solve  problems they are coming up against.

On the foot of this, I have applied to become an Ubuntu Member, and I am waiting on whether this will be approved or not, but as a part of this application process, I was pointed to Launchpad and the myriad of ways that users can contribute there.

While I am not a coder, I feel that I am able to help out with documentation and translation, and as a result I have joined both a Ubuntu Community Documentation Team and a UK English Translation Team. This means a whole new world of IRC meetings and mailing lists, but I find it very fulfilling to be a part of the community who is attempting to give something back.

So for those out there who use Linux and have often felt they would like to give something back, but are unsure how, it is worth taking the plunge. Read plenty, listen plenty, help in small ways first. Whatever you do, get involved, and become a part of the Free/Open Source Software revolution.