Getting to the next level and have a life

Duncan Epping recently posted an article called “How do I get to the next level” which was an interesting read, that I almost didn’t do. See in the beginning of the article he stated

If you can’t be bothered freeing up time, or have a too busy family schedule don’t even bother reading past this point.

Typically I’d stop there, because for me nothing is more important than family, and dedicating time to be with my daughter, wife, extended family, and friends. I’m not interested in reading an opinion if family schedule is a consideration, because for me it is. While I am no where near Duncan’s status or skill, I think there things everyone can do, regardless of family schedule to help you grow personally and professionally.

First and foremost grab a piece of paper and pencil, scribble down where you would like your career to go in the next few years. For example maybe you would like to be in an SE role or Technical Marketing type role. I say write it with pencil and paper because the path you set today is going to take a few side roads and detours along the way. For example a friend on mine has talked to me recently about wanting to be in a technical marketing role, yet other interesting opportunities may present themselves that will help get to that position. Personally, I knew I wanted to be involved in virtualization back in 2004 when Microsoft released Virtual Server – I could instantly see the benefits of virtualization and made an effort to to get hands one with that, or similar technology in my future roles. It wasn’t until 2008-2009 that I did my first VMware deployment but I had done plenty of Virtual Server and Virtual Iron deployments prior to that. During that time I weaved through a stint in as an IT Director for two organizations. When I realized I wanted to be more hands on, I pivoted out of the management roles and back to a hands on one. Even at that, I never thought I’d end up working in an education department, but given my personal values it totally made sense when the opportunity presented itself (by the way for me it’s family, friends, health, education, work – in that order).

Once you think you have an idea, reach out to people in the community that are at companies or in positions you think you’d like to go. Benefit from their experiences in how they got there. No one else’s path will be quite like yours, but I talked to people about SE roles at VARs – a position I thought I wanted to be in, and realized it wasn’t going to be for me given the travel (I have no desire to be away from my family for any extended period of time on a regular basis).

Where I think Duncan is spot on, contribute to the community. Whether that is via vendor forums such as the VMware Communities site or independent forums such as Spiceworks, you’ll make great connections and, if you follow Duncan’s advice, learn a few things. Take on the difficult questions, go research problems, read documentation that may take you out of your comfort zone. I also often hear from people that they don’t have time to blog. My response to that is shenanigans. As a technologist, you should be documenting what you are working on anyways – why can’t that be a blog post? Obviously you do not want to share confidential information, but even if you are setting up an XtremIO, why does that have to be associated with a particular customer or business? Document the steps you took to set it up, grab screenshots prior to entering confidential information such as domain names or IP ranges and, not only do you now have a blog post, you have documentation for your organization – two birds, one stone. This process has really allowed me to create content for my blog, and be documenting what I am working on to support my employer.

So, how do you do this while maintaining commitments to friends and family. You need to put some effort into managing and planning your life. Look at all the things you do on a regular basis – are they worth it? For example I used to play in a basketball league on Saturday mornings, before kids the hour long ride to the gym and back was no big deal, now losing half a day to play basketball isn’t an option. Now the goal here is maintaining your life, since playing basketball was a key way for me to get exercise it seems a bit counter productive to drop it. The key is to replace, not drop activities with things that are more efficient. I looked around local town programs and found a pickup basketball game on Sunday mornings, which just so happened to be on my way to the grocery store, and I just so happened to do my grocery shopping on Sunday mornings. Now, rather than losing a half day Saturday to play basketball I do it on Sundays just before something else I needed to do anyways. The point here, eliminate time sinks in your schedule, don’t give up having a life, just evaluate how you spend your time.

Speaking of evaluating how you spend your time, this is a key element at work as well. As I write this blog post I am at work. How do I have time to write a blog post at work? Well I speak to my manager on a regular basis to understand what our teams priorities are, as well as upcoming work that needs to be done. While I don’t always have time to jot down a blog post, these last two days I have so I took advantage of the time to write this, and one over at yesterday. I spend less time monitoring emails by taking a version of Cody Bunch’s post on how to manage email so I am not sinking unnecessary time into reading emails as they come in. If you don’t think you can do it, you absolutely can. For what it’s worth, stop checking emails at home or while you’re on vacation – unless you’re on the brink of curing cancer, you don’t need to be working all the time. This has freed me up to spend a bit of my free time at home playing with new technologies. In the amount of time it takes for my wife to read my daughter a book at night before bed, I have been able install Ansible and get to know the vsphere_guest task. Later at night while my wife and daughter are sleeping is also when I spend time recording podcast such as a #vBrownBag session I did on Ansible+vCenter and Application Services, as well as recording Size Matters podcast.

I’ve been able to do this, as well as advance my career all while spending time with friends and family. Realize that you do NOT need to be working all the time, you are not selling your entire life to your employer, you are selling them 40 hours of your week. The rest of the time should be spent on you, if your employer does not recognize this it may be time to move on. For those managers/employers that may be reading this blog post, realize that it is literally science that employee productivity goes down around 30 hours worked, and that freedom and time spent learning, and engaging others in the community can actually increase productivity – not mention the skills, of your employees. If anyone would like to chat more about their career, how I balance personal and work commitments or just want to talk fantasy baseball, as always, reach out.

#vBrownBag Using Ansible with vCenter Examples

I wanted to share some of the example Ansible playbooks used during last Wednesday’s US #vBrownBag. During the show I went over examples of how you can use Ansible to create, clone, and update virtual machines in vCenter without the need for other provisioning tools. Based on my testing (and I’m still learning as well), the items noted in the comments are the bare minimum needed to run the playbook, even though the official documentation may currently state otherwise. If you are already using Ansible for configuration management, this is a handy option to have as you can perform the provisioning tasks without leaving Ansible.

All playbooks have been uploaded to my GitHub Ansible-Test-Playbooks repository (


EMC Elect 2015 – Thank you! #EMCElect

I was pretty excited to hear I have once again been selected as a member of the EMC Elect community for the 2nd year. Since becoming EMC Elect in 2014, I also joined EMC full time in the Education Services department.

For those curious what EMC Elect is all about, head on over to ECN; here is a brief snippet:

EMC Elect is a community-driven recognition and thank you for an individual’s engagement with EMC as a brand. Why is this important – critical, even – for EMC? Here’s where it all began:

Our charter: The team at EMC has designed this program to increase investment and engagement with EMC within our global community – customers, partners, and EMC employees alike.

Our goal: Provide EMC Elect members with unprecedented access into EMC product and service teams; enable them with exclusive privileges; and further their status as community leaders.

Our vision: EMC Elect will be held with high regard within the industry, highlighting and enhancing thought leadership in the fields of data center management, cloud computing, and big data. The program will lead to innovative breakthroughs and a stronger community across the globe.

The  EMC Elect FAQ document details the parameters of the program and should also be reviewed for a full picture of what the EMC Elect program represents.

Ansible-lint for playbooks

During the #vBrownBag DevOps series after-show from my Using Ansible to provision VM’s in vCenter, Mike Marseglia asked about options for linting Ansible playbooks. Since I didn’t know, I thought it would be worthwhile to look into it. There is an Ansible-Lint repo on GitHub, reading through the information, it seemed straight forward. Here I am going to have a look at installing and using it against some example playbooks.

Installation should be easy, assuming you’ve got the correct packages installed, see my previous Ansible posts – if you got through that install, you should be able to install this with a single line:

pip install ansible-lint

Once installed you should now be able to do something like this:

ansible-lint clone-vm.yml

The clone-vm.yml is from my #vBrownBag series. As you can see in this screenshot, it suggests I have some trailing whitespace

ansible-lint-whitespaceOnce I tiddy up the extra whitespace in the playbook, no suggestions are returned.

ansible-lint-fixedThat is a pretty basic example, let’s say I’ve missed something such as a { when using vars_prompt, here you can see I have a missing backet for vm


Once again, now that it is fixed, no suggestions are returned. One thing that at least this specific tool does not help with is spacing errors, so your playbook will need to be valid, running ansible-lint here for example where my spacing is incorrect results in an general Ansible error, though it does point out where the error likely is:


Going forward I’ll certainly be looking into using this when writing a playbook to ensure general recommended practices are adhereed to. I’m still on the lookout for a tool that can help with spacing though!

Enter to win a free home lab from @VMTurbo

*Disclaimer – VMTurbo is a sponsor of this blog*

On February 19th VMTurbo will be holding a webinar to introduce Operations Manager 5.1. As part of the webinar they will be giving away a free home lab kit featuring an Intel NUC i5 with 16GB of RAM and a 4-bay Synology DS415+ (diskless) and a few more goodies to round out the home lab; all in you would be into this setup for about $1600. Not to bad to attend a webinar about a product that could help you identify problems in your infrastructure ay?

Head over to the VMTurbo registration page to sign up and find out more.

Error during deployment of vCenter Server Appliance or Platform Services Controller following error

Scenario: You try to install the VMware vCenter Server Appliance (VCSA) or Platform Services Controller but receive an error during the installation. After correcting the problem during installation you attempt to re-install the appliance but receive the following error message:

Virtual Machine Already Exists

Virtual Machine Already Exists

As of the release candidate of vSphere 6.0, the vCenter Server Appliance installation wizard does not clean up deployed virtual machines after failed deployments. Virtual Machines deployed are still present on the selected ESXi hosts inventory. Log into the ESXi host, power off, and delete the virtual machine from the failed deployment.


If you attempt to redploy the virtual machine with a different name (appliance and host name) using the same IP address you receive the following error message:

Encountered an internal error. see /var/log/firstboot/vmafd-firstboot.py_6399_stderr.log

Because the virtual machine was deployed and powered on, there is a duplicate IP address on the network.

Error: Supplied System Name is not valid during vCenter Server Appliance 6 installation

During the installation of of the VMware vCenter Server Appliance (VCSA) 6.0 or the Platform Services Controller (PSC) Appliance 6.0, you receive the following message:

Firstboot script execution Error.


The supplied System Name [name] is not valid

VMware vCenter Server Appliance (VCSA) and Platform Services Controller (PSC) error during installation – supplied system name is not valid

VMware vCenter Server Appliance (VCSA) and Platform Services Controller (PSC) error during installation - supplied system name is not valid

VMware vCenter Server Appliance (VCSA) and Platform Services Controller (PSC) error during installation – supplied system name is not valid

Additionally, logs found at %USERPROFILE%\AppData\Roaming\VMware\vSphere\vcsa\sessions\session_####\logs do not provide additional details, only

2015-02-06 22:41:09.330738 Progress Controller: [VCSA ERROR] – First Boot error

This problem is likely due to incorrect DNS configuration, either in the DNS server IP address provided during the VCSA or PSC installation or there is no matching DNS record.

Verify that both forward and reverse DNS lookup zones exist and re-run the installation, validating that DNS is working. Below is an example of running nslookup FQDN. The first when the record doesn’t exist, the 2nd after it has been added. Ensure you resolve the expected IP address from NSLOOKUP and re-run the installer.



Installing the VMware vCenter Server Appliance 6.0 VCSA

**Note that these directions are based on Beta/RC code. According to a recent post by Mike Brown this is likely to change by GA. I will leave this published for now for those wishing to try the beta/RC code**

Generally, installing virtual appliances has been pretty straight forward – import an OVA and enter the necessary details in the deployment wizard, or access the virtual appliances management interface (such as those typically on port 5480 from VMware). However, as of the Release Candidate for VMware vSphere 6.0, the vCenter Server Appliance (VCSA) installation takes a much different approach than what you’ve been used to.

A few vCenter Server Appliance prerequisites

First, it should be noted that you can only install the vCenter Server Appliance (VCSA) from Windows. I was first turned onto the VCSA because I was at an all OSX/Linux shop so it made sense to use something we were accustomed to using already. For now, you’ll need a Windows box to at least get the appliance deployed;  then you can punt (please note also this is based on Release Candidate (RC) code and could change in the final release).

You CAN deploy the VCSA 6.0 to both ESXi 5.5 or 6.0 host. If you currently have a 5.5 environment you can deploy the VCSA without upgrading your hosts, but if you did not take  the plunge into 5.5 you’ll have to bring at least one host online running 5.5. or 6.0.

Finally, before getting started, you MUST create DNS records before running the installer. I was struggling with the new installer because I’ve just been used to doing my DNS records after I deployed the VCSA, but before running the setup through the management interface. However with a little help from Emad Younis (@Emad_Younis) I was able to point me in the right direction. With 6.0 all of the configuration is done from the initial setup wizard. When it’s finished installing, vCenter is ready to run.

The installation wizard will NOT give you an error if this does not exist, instead it will fail during the installation!

As you can see here I have my forward and reverse DNS records ready to go on .9


Installing the vCenter Server Appliance

As with the older versions of the VCSA, it all starts with a download; however in this case you will be downloading an ISO image. Once the ISO image is downloaded either mount the ISO on your Windows box or extract the ISOs into a folder (as seen here).


Now that you have access to the files, drill down into the vcsa folder, there you will find the VMware-ClientIntegrationPlugin-6.0.0. Install this application on your Windows box (double click, Next, Accept/Next, Next, Install, Finish). Once the plugin finishes installing, back up one folder level and open the index file. As you can see here I am on Windows Server 2012, thus at least IE10 however opening the index in IE10 gives me a warning that I need to upgrade to at least IE10 or 11, so yea I’m going with Chrome. As with any plugin, you must enable it in Chrome. Click on the puzzle piece with the red x, then click Always allow and refresh the page and click the Allow button.


You should now see the vCenter icon along with a large Install button, click on it. You will get a UI very similar to what you would get deploying a virtual appliance.

vmware-vcsa-6 -installer Continue reading

Deploying Virtual Machines to vCenter with Ansible

During the #vDM30in30 challenge I started playing with Ansible to get to know it a bit better. One of the things I was curious about is the ability for Ansible to provision virtual machines directly to vCenter. After all if I am using Ansible to manage the configuration of my servers, it would certainly be nice to have a playbook that also deploys my virtual machine, rather than another provisioning tool.

If you don’t already have Ansible up and running, you can get the dependencies installed and Ansible project cloned from GitHub pretty easily with a vanilla CentOS box. Once Ansible is running and you have a playbook or two under your belt you can take a read at the Ansible vsphere_guest docs. This particular module is a bit lacking, I hope to add some updates soon and see if they get accepted.

As they mention in the docs, you will need to have pysphere installed; PySphere being a Python API to support interaction with vSphere/vCenter. PySphere is easy to install if you were able to follow along with my Installing Ansible from Git post; simply run

sudo pip install -U pysphere

With PySphere installed, you are now ready to create your playbook. The playbook example in the Ansible docs seemed to be missing something. Recall from my other posts you typically specify a host (linux box, not vSphere host) in your inventory file and direct the playbook that that host or groups of hosts, for example:

- hosts: db
  remote_user: virtxpert
  sudo: yes
  - name: update mysql-libs-latest 
    yum: pkg=mysql-libs state=latest

But, as you can see in the document ion, you specify the vSphere/ESXi host and vCenter server in the vsphere_guest task. So after a few iterations of trying to get that to work, I came across this page on GitHub. It shows what appears to be essentially dummy text to satisfy the host requirements in the playbook. So my playbook ends up looking like this:

- hosts:
  connection: local
  user: root
  sudo: false
  gather_facts: false
  serial: 1

  - vsphere_guest:
      vcenter_hostname: vxprt-vc01.vxprt.local
      username: [email protected]
      password: ********
      guest: testansible
      state: powered_on
        size_gb: 1
        type: thin
        datastore: vxprt-esxi01-gold-local
        type: vmxnet3
        network: vm
        network_type: standard
        memory_mb: 1024
        num_cpus: 1
        osid: centos64Guest
        scsi: paravirtual
        datacenter: dc01
        hostname: vxprt-esxi01.vxprt.local

With this playbook format in place, I am now able to run the playbook and have the virtual machine created in vCenter.

Playbook success provisioning virtual machine to vCenter

Playbook success provisioning virtual machine to vCenter

vCenter with virtual machine provisioned from Ansible playbook

vCenter with virtual machine provisioned from Ansible playbook

Up next, play around with vars_prompt in place of some of the item names so when the playbook is run, it will prompt the user for input and using Ansible to clone an existing vSphere template.

Back to basics – Configuring the ESXi management interface via DCUI

Configuring the ESXi management interface via the Direct Console User Interface (DCUI) is the first step, post installation, needed to make your ESXi host accessible (unless of course it obtains an address via DHCP). Once the management interface is setup and working you can then log into the server from the host based client or use tools such as PowerCLI to manage and configure the host.  In fact, since the basic features of ESXi are free, you could start virtualizing with just 1 host and the management interface configured.

virtualize-all-the-thingsOnce the install is complete and you have restarted your server, you will be at the DCUI.

  • Press the F2 button on your keyboard and enter the password you set during installation (see, no copy and paste here which is why I start with something easy).


  • Use the arrow key to “Configure Management Network” and press enter
  • Select “Network Adapters” and hit enter; here you can choose which network interfaces you want configured as a vmkernel adapter to support management traffic.  In this example only have 1 NIC but you may  have many in a production environment (you can very easily run  small workload traffic over 1 interface, but you won’t have redundancy)


  • Depending on your network configuration, you may need to go into “VLAN (optional)” to set your VLAN ID for this interface if you require all traffic to be tagged (for example in a UCS environment).  For simple configurations, this step is probably not needed.
  • Next, use the arrow keys to go to “IP Configuration” and press enter.  You can set either a dynamic or static IP address.  If you go the dynamic route via a DHCP server I’d suggest using a reservation so your IP address is consistent.  Using DHCP here also adds some considerations for availability.  For example if your DHCP server is not available, your host won’t get an IP address.
  • If you use IPv6, select “IPv6 Configuration” and configure as needed.
  • Now, go to “DNS Configuration” and press enter.  Here you define your DNS servers as well as your host name.  If you opted for DHCP, these will be provided otherwise enter these as appropriate and make sure you host name matches the DNS record you created.
  • Once finished, hit the ESC key.  Here you will be prompted to restart the management network (unless you didn’t make any changes, which if you are using DHCP is certainly possible)


If you have not already done so, create the appropriate DNS records for your host(s). You should now be able to access the Welcome page and download the Windows client. You could also connect to the host using PowerCLI at this point.


The basics are now in place for you to start creating virtual machines!