How To Deal With a Complex Project

You have been tasked with a task, it could be a long term project, a one-off thing. These usually involve identification of number of tasks and stages that need to be executed in order to complete the whole task.

One such an example that I would like to discuss today is the completion of a complex scripting task.

One script I have been nurturing is a deployment script for Oracle RAC on VMware. It actually has grown to be over 700 lines of code (perhaps one day I will be able to make it public).

I was asked not so long a go, “How do you manage to write such a long script? How or where do you even start?”. The answer to that question is the reason for this post.

I really love working in PowerShell and PowerCLI – that is no secret. I do dabble in other scripting languages as well but Powershell is still my favorite.

Scripting can be used in different ways.

  • One time quick and dirty tasks. You pop out a line of code which gets the specific information you want, and perhaps you will save it (you should) – just in case you need to do it again. These are also referred to as one-liners.
  • Functions – here you think a little more, I want to create a piece of code that can be used on a regular basis – make it re-usable and write it to be robust, mean and lean.
  • A process or a workflow. Now I know some of you will say that Powershell/PowerCLI is not really the ultimate tool to use for running complex tasks with multiple scenarios and use cases – and I must say I agree. On the other hand – vCenter Orchestrator has a steep learning curve. Using a tool that you already know and are familiar with will make it easier. Easier to write, optimize, troubleshoot, and document.

No matter which tool you use the methodology will be the same. This is how I do it – and perhaps this can help you too.

  1. Envision the process from a high level perspective
  2. Layout the steps you need to perform in order to get there
  3. For each step – detail what exactly needs to happen
  4. Write the code you need to get it done.

It is best to explain this by walking through an example (without actually writing the code)

Each VM that is created is usually done by an admin/user. You would like to have some way of knowing who created the VM, when and for whom (owner/department).

So how would you go about doing this?

Step 1 – Envision the process

This is how I see this – from a very high level.

Envision the process

Someone creates a VM, the details are filled in, and a report is sent out. Look at it from the perspective of upper management – they do not care about the details, how it works, they look at the process.

That was the easy part.

Step 2 - Layout the steps

When a VM is created it is logged, and these logs can be parsed or checked for specific events. From that information you will extract the information needed (Date, Created) and attach that info to the VM, the easiest way would be to add it to a custom field for the VM. This process will be performed for each of the new VM's that were found.

All of this information should should be collected into a readable format that can be sent as a report, either a file or an HTML page.

Layout the Steps

Step 3 – Describe each step in detail

VM Created

A VM is  born

A VM is born. How do you know that this happens? Well pretty simple. Go through the events that were created in vCenter. But you have to remember of course that there are several ways to create a VM and these could be:

  1. Deploy from OVF
  2. Deploy from Template
  3. Create From Scratch
  4. Clone from Existing VM

Not all of these have the same events registered in the Events and Task so you will have to look for all of them to catch all VM's created.

You really do not want to scan all the events (from time immemorial) so you should decide on a timeframe - an this will be the period you will check against.

So if I were to layout my steps they would be as follows.

## Define Period to search - 24 hours
## Get All events for VM created
    ## Cloned VM's
    ## Deployed from OVF
    ## Created from Scratch
    ## Cloned From Existing

But in order to even begin to get events I would need a few things (seeing that I will be running this as a scheduled script):

  1. PowerCLI
  2. Connection to vCenter

So my steps will change a bit to look like the following:

### Validate connection to vCenter ###

## Check for PowerCLI
## Check for Connection
    ## If not connected then connect
        ## Need vCenter Name and credentials

### Get All VM's Created ###

## Define Period to search - 24 hours
## Get All events for VM created and store in a variable
    ## Cloned VM's
    ## Deployed from OVF
    ## Created from Scratch
    ## Cloned From Existing

OK So now I have all the VM's created within the past 24 hours. Here would be my next steps.

Update Fields

From the event Update Fieldsdetails of each event for each VM - get who the user was that created it and when.
Populate that into a Custom field/Tag for each VM.

So if I were to layout my steps they would be as follows.

### Update details for each VM

## Go through each event
## Update Created By
    ## Extract Username that created the VM
        ## Get proper Name from Active Directory
            ## Need access to Active Directory - AD Powershell Module
        ## Update Custom Field / Tag
        ## Save to report
## Update Date Created
    ## Extract Date when VM was created
        ## Convert date to something that can be indexed
        ## Update Custom Field / Tag
        ## Save to report
## Update Owner
    ## Check if Owner was already updated
        ## If not - send email to user that created it to update the field
            ## Need to get email address of creator
            ## SMTP server variable
            ## From address variable
            ## Subject variable
            ## Body to be sent in email
        ## Save notification to report

Create Report

Now to send out the report.

## Take information from report
## Convert to something readable
    ## Export to Excel file
    ## Convert the information to HTML so it can be re-used
## Send Email
    ## SMTP server variable
    ## From address variable
    ## To address variable
    ## Subject variable
    ## Body to be sent in email

Step 4 – Write the code in detail

Now you know what the steps are, it is now time to write the code for each and every step, and this is where most of the work will be. It could be that during the writing of the code you will see that you need to perform additional steps in order to accomplish what you would like, and if so - continue writing out the stages and fill in the appropriate code. Such an example would be - this should be run as a scheduled task which means you will need to provide a method to pass the credentials to the script. Another example would be - you already sent an email to the Creator saying that they should update the Owner, and if they did not - do you leave it? Send them another email? Escalate the issue? For each of these scenarios, there are steps that need to identified, and the appropriate code written.

Another thing I like about this methodology is that it already partially provides some basic documentation for your script - something that is very important - so the code can be re-used in other scenarios as well.

I will not be providing the code for the steps, I will leave that task for you.


Envision at a high level what you want to accomplish, identify what are the needed stages for this to succeed, and break each of these stages into small steps, and detailed again further into more steps until you have each and every step as part of your plan.

I used a PowerCLI script here as an example - but this methodology can be applied to any project.

  • VCDX Certification
  • Upgrade from 5.0 to 5.1
  • Implementation of vCloud in your organization
  • Upgrade Active Directory to 2012

This is the methodology that I use - I hope that it will be of some use to you.


I Just Bought Some Kitchen Faucets/Hypervisors

A few weeks ago I discovered leak in one of my kitchen faucets. At the time I managed to fix it - but it was evident, it would not hold for long, so I needed to get new ones. The previous ones had served me well for a good 10 years.

I do not know about you - but things like kitchen faucets in Israel are not cheap - they can go from anything from $100 - $600 (Yes I know this outrageously overpriced - but that is what they cost).

I went to a couple of stores and looked around, asked about the products.

  • Where they were made (almost all the answers were China)
  • What guarantee came with the product, service etc.
  • What could go wrong with them (usually rubber washers)
  • The material it was made of  (the mechanism is either ceramic or brass - body can be plastic, brass or zinc)

Now that I had all my detailed information - I weighed my options, do I want to get it here from a local store or perhaps should I go directly to the supplier.

Since the manufacturers are all from China - I started to look around to see if it would be possible to get itfaucet directly from there.

To cut a long story short. I found the manufacturer and purchased directly from them including the shipping through DHL it came to 25% of the original price. I had the product within a week.

So we have gone through my faucet saga (but I hear you saying, Why the heck are you blogging about this????")

This brought me to think about how people talk about changing hypervisors, or adding another hypervisor into their environment.

You go to your current software provider (VMware for example) and you want to replace/renew something - it costs you $$,$$$.

So you go around the market and ask about the products:

  • What are their features (HA, vMotion, DRS etc… )
  • What support do I get the products (24x7 phone support for example, local support personnel in my country)
  • What could go wrong (where do I start……. ????)
  • Stability, market share, price
  • Cloud options

According to your window shopping spree you will come to your conclusion - if it is possible and financially viable to change / switch add another hypervisor to your environment.

There is no need to say that buying a kitchen faucet is not the same as a hypervisor, definitely not. But it does show how close we are coming to the stage that infrastructure is becoming a commodity, something we can "go to a store" and buy elsewhere.

  • If the price is right.
  • If it does what we need.
  • If it is reliable.
  • You can support it correctly.

As always you can leave your thoughts and comments below.


vCenter Automated Install

So how long does it take you to install vCenter, not using the VCSA, but the Windows package? How many manual steps does it require you to perform? Have you actually ever counted? It is quite a lot.

I was presented with the following requirements for a project:

  • We need to install vCenter as part of a deliverable for a customer
  • The Installation should standard and repeatable.
  • The database will be on an external Oracle VM.
  • The process should be automated.
  • The whole process must be logged to a file.

So you might ask – why would you do this for a one time thing – I agree – you really wouldn’t. But in my case since this was to be used to deliver a solution to a substantial number of customers – then repeasting a manual installation each time was completely out of the question.

Going back to vCenter 5.0 it was actually pretty simple. Well not really simple but there are less moving parts, you run one script – pass the correct parameters, and hey presto you have a vCenter installed.

In vCenter 5.1, VMware made life a lot more complicated. When you install vCenter – you actually install 3 separate packages (and they have to be in the following order):

  1. Single Sign On
  2. Inventory Service
  3. vCenter Server

You can then also install the Web client – but this is not mandatory – but it is advised – this will be the last version of the Windows vSphere Client – you had better start getting used to the Web Client – so actually there are 4 packages.

VMware has separated this into two methods one of which is called the – Simple Install – which will install the whole thing for you in one shot – but your options of customization here are limited. Everything is installed with the defaults – all with embedded SQL databases – but not really what I would call production ready. That means you will need to install them separately.

Before I start I would like to point to two invaluable resources that helped me in preparing these scripts. This thread on VMTN (GrantOrchard provided the the syntax) and the Command-Line Installation and Upgrade of VMware vCenter Server 5.1 document – which has all the information you need.

There are a few points that I would like to make clear.

  • This post will not explain how to setup the Oracle Client on your vCenter server (that will require a separate post)
  • This post will not explain how to create the tablespaces and apply grants on the Oracle database. VMware do a good job of explaining that here (perhaps I will elaborate this post a bit further in the future on how that can be done in an automated way).

These are the pre-requisites to start with.

  1. You have an Oracle client on your Windows vCenter server – already pre-configured. In my case this was Oracle Thin Client.
  2. Powershell is installed
  3. Your tnsnames.ora is already configured.
  4. You have a remote Oracle Database VM.
  5. Both the vCenter tablespace and the Single Sign On tablespaces have already been created with their appropriate users and proper grants as documented here.
  6. You have an ODBC connection already setup and verified from the (to be) vCenter VM.
  7. The environment I am installing does not have DNS resolution between the VM’s therefore the hostname and IP of the database server need to be set in the hosts file.

And now to the script – annotations are at the end:

 ## =====================================================================
## Title       : vCenter51_Install
## Description : This script will install all the necessary components
##				 needed for vCenter 5.1
## Author      : Maish Saidel-Keesing
## Date        : 19/02/2013
## Usage	   : PS>  .\vcenter51_install.ps1
## Notes	   : More information about this scipt can be found at
##	    	     http://technodrone.blogspot.com
## Version     : 1.0.1
## =====================================================================

## Start Logging
Stop-Transcript | out-null
$ErrorActionPreference = "Continue"
$transcriptpath = ".\vCenter_install_" + (Get-Date -Format dd-MM-yyyy_HH-mm) + ".log"
Start-Transcript -path $transcriptpath -append | Out-Null

#Update Hosts file
$vcenterdb = Read-Host "Please Enter the IP address of the vCenterDB (Oracle) Server"
$hostsfile = "C:\Windows\System32\drivers\etc\hosts"
if (!$((Get-Content $hostsfile) | Select-String "vcenterdb")) {
	Write-host "Adding vcenterDB to the hosts file..." -ForegroundColor Green
	Add-Content "`r`n`n$vcenterdb`tvcenterdb" -Path $hostsfile
	if (((Get-Content $hostsfile) | Select-String "vcenterdb") -eq $null) {
		Write-Warning "Hosts file was not updated correctly!! Exiting.."

if (!$(Test-Path -Path 'c:\temp')) {
	New-Item -ItemType Directory -Path 'c:\temp' | Out-Null

#Define Parameters
$VCMedia = "C:\installs\VMware-VIMSetup-all-5.1.0-947939"
$LIKey = ""
$Username = "Maish"
$CompanyName = "maish"
$ODBCName = "vCenter"
$DBUser = "vpxadmin"
$DBPass = "vpxadmin"
$SSOpasswd = "Hello!2"
$SSO_ADMIN_USER = "admin@System-Domain"
$wipedb = "FORMAT_DB=1"
$vcenterIP = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .).IPAddress

#SSO installation
Write-Host "Installing Single Sign On" -ForegroundColor Green
$exe = "$VCmedia\Single Sign On\VMware-SSO-Server.exe"
$myargs = '/L1033 /v"/qr MASTER_PASSWORD=' + $SSOpasswd + ' RSA_DBA_PASSWORD=' + $RSA_DBA + ' RSA_USER_PASSWORD=' + $RSA_USER
$myargs = $myargs + ' CONFIG_TYPE=Setup SETUP_TYPE=Basic SSO_DB_SERVER_TYPE=Custom JDBC_DBTYPE=Oracle'
$myargs = $myargs + ' JDBC_USERNAME=' + $RSA_USER + ' JDBC_PASSWORD=' + $RSA_USER + ' COMPUTER_FQDN=\"' + $vcenterIP
$myargs = $myargs + '\" IS_SSPI_NETWORK_SERVICE_ACCOUNT=1 SSO_HTTPS_PORT=7444 /L*v \"C:\temp\ssoinstall.log\""'
Start-process $exe $myargs -Wait

#Inventory Service installation
Write-Host "Installing Inventory Service" -ForegroundColor Green
$exe = "$VCmedia\Inventory Service\VMware-inventory-service.exe"
$myargs = '/L1033 /v"/qr QUERY_SERVICE_NUKE_DATABASE=1 SSO_ADMIN_USER=\"' + $SSO_ADMIN_USER + '\" SSO_ADMIN_PASSWORD=\"' + $SSOpasswd + '\"'
$myargs = $myargs + ' LS_URL=\"https://' + $vcenterIP + ':7444/lookupservice/sdk\" HTTPS_PORT=10443 FEDERATION_PORT=10111 XDB_PORT=10109'
$myargs = $myargs + ' TOMCAT_MAX_MEMORY_OPTION=S /L*v \"C:\temp\inventoryservice_install.log\""'
Start-process $exe $myargs -Wait

# Install vCenter 
Write-Host "Installing vCenter Server" -ForegroundColor Green
$exe = "$VCmedia\vCenter-Server\VMware-vcserver.exe"
$myargs = '/L1033 /v" /qr DB_SERVER_TYPE=Custom DB_DSN=\"' + $ODBCName + '\"  DB_USERNAME=\"' + $DBUser +'\" DB_PASSWORD=\"' + $DBPass + '\" ' + $wipedb
$myargs = $myargs + ' JVM_MEMORY_OPTION=S SSO_ADMIN_USER=\"' + $SSO_ADMIN_USER + '\" SSO_ADMIN_PASSWORD=\"' + $SSOpasswd + '\"'
$myargs = $myargs + ' LS_URL=\"https://' + $vcenterIP + ':7444/lookupservice/sdk\" IS_URL=\"https://' + $vcenterIP + ':10443\"'
$myargs = $myargs + ' VC_JDBC_URL=\"jdbc:oracle:thin:@vcenterdb:1540:VCENTER\" VPX_USES_SYSTEM_ACCOUNT=1 COMPUTER_FQDN=\"' + $vcenterIP + '\"'
$myargs = $myargs + ' VC_ADMIN_USER=\"Administrators\" VC_ADMIN_IS_GROUP_VPXD_TXT=true VCS_GROUP_TYPE=Single VCS_ADAM_LDAP_PORT=389'
$myargs = $myargs + ' VCS_HEARTBEAT_PORT=902 /L*v \"C:\temp\vcenter_install.log\""'
Start-process $exe $myargs -Wait

#Install Web Client
Write-Host "Installing Web Client" -ForegroundColor Green
$exe = "$VCmedia\vSphere-WebClient\VMware-WebClient.exe"
$myargs = '/L1033 /v" /qr SSO_ADMIN_USER=\"' + $SSO_ADMIN_USER + '\" SSO_ADMIN_PASSWORD=\"' + $SSOpasswd + '\"'
$myargs = $myargs + ' LS_URL=\"https://' + $vcenterIP + ':7444/lookupservice/sdk\" HTTP_PORT=9090 HTTPS_PORT=9443'
$myargs = $myargs + ' /L*v \"C:\temp\weblient_install.log\""'
Start-process $exe $myargs -Wait

# Stop logging

Lines 13-18 – Creates a log file of the transcript to the current directory of the script.

Lines 20-30 – Remember there is no DNS resolution – the user is prompted for the IP address of the Oracle database (vCenterDB) and the entry is added to the local hosts file.

Lines 32-34 – All vCenter component installation logs will be written to C:\temp. If the directory does not exist – it will be created.

Line 36 – License Key – in my case was blank – and will be added at a later stage.

Line 37 – Location of the vCenter installation package.

Lines 39-40 – Windows details.

Lines 41-43 – ODBC details this includes the ODBC connection and credentials.

Line 44 – This is the password that you will use for the Single Sign On admin@System-Domain user.

Lines 45-46 – This is the usernames and passwords for the database for SSO. if you followed the default creation scripts provided by VMware – then the username and passwords witll be the same. If not – then you should add the additional variables for the passwords.

Line 47 – The SSO admin user.

Line 48 – If there was existing data in database – clean it out.

Line 49 – since there is no name resolution – everything will be done with IP, here we retrieve the IP of the vCenter server. through WMI.

Lines 52-59 SSO Installation - create the arguments that will be passed to the MSI file. This could all be on one line but I broke it down for easier reading. Here we use the variables defined above.

Line 60 – Execute the installation and wait for the command to exit before continuing.

Lines 62-68 – Same as above but for the Inventory service. Here no database is necessary – only the credentials for SSO.

Lines 70-80 – vCenter Server installation.

Line 76 – I want to point out here that the VC_JDBC_URL is specific to the Oracle thin client you can see all the options here JDBC URL Formats for the vCenter Server Database.

Lines 82-88 – Web Client installation.

Line 91 – Stop the transcript.

I would like to stress again that this was created for a specific use case with Oracle – but the information here will be able to assist you in adapting the script to your environment.

Start to finish – less than 15 minutes to install a full vCenter. How do you like them apples??



Please do not vote for Me!


Really – I mean it!!

The Twitterverse exploded this morning with @ericsiebert’s announcement:

Voting now open for the 2013 top VMware & virtualization blogs (Read his post – with detailed instructions)

Shortly thereafter started the flood of posts announcing the vote. Over 20 in the last past 12 hours.

“Vote for me …. “ “This is what I did ….” “This is who I voted for… and why… “


Vote!! Vote!! Vote!!!

Self promotion is a good thing – to an extent.

I have my opinions about the whole process, I have voiced them before publicly on Twitter and also on my blog as well. Here is a post I wrote about this last year - ‘Tis the Season to be Voting …..

What I said there I will stress it again and in bold this time

Try not to make this into a popularity contest.
Judge the bloggers on their content.
Judge the bloggers on their writing skills.
Judge the bloggers on their passion.
Judge the bloggers on who they are – not just because they work in company A, B or C.

During the last year or so I have seen people start blogging or try and “arrange” for themselves positions within the community (becoming a VMTN moderator as a springboard to become a vExpert is such an example) for all the wrong reasons.

To put it in the words of others – who have said it better than me.
Thanks to Rynardt Spies, Christian Mohn and Ricky El-Qasem for sparking this post.

For the right reasons

Vote for whoever you want – but do it for the right reasons!!

One more thing – thank you Eric for all the hard work you put into this!!


Migration Path for the VCSA from vPostgres to.. ??

Wait… there is no way to do that – is there? Is there?

Today I would like to address a point that is perhaps pretty obvious but not really well known, and that is the lack of a migration path out of the vCenter Server Appliance installed with an embedded database.

To understand the issue – let us first understand the process if you were to use a vCenter Server installed on a Windows Server machine.

When you want to try out vCenter, you will install the software on a Windows Server, usually with the embedded SQL EXPRESS database that is provided with the software. VMware stress (and rightfully so) that this should not be used for a production environment and this will only be will be suitable only for 5 hosts and 50 VM’s. But since you only want to try out the software – that should not be an issue.

Fast forward a few months (or weeks or perhaps even days because we know that you will want to have this in production as soon as possible) and you see that this will provide great benefit to you and your company – and now you want to move it into production. This will of course require you to move the database out of the embedded SQL Express instance and put it into a proper SQL Server.

The process is pretty straight forward and has been documented a number of times. VMware even has a KB explaining how this should be done.

Once complete you now have the same VMware environment that you started out with and have been using, including the permissions, the folder structure the statistics and all.

So how would we go about doing the same with the VCSA?

You install the vCenter Server Virtual Appliance and follow the steps including the using the embedded vPostgres database. Again this is not for production use and VMware sizes such a deployment for not more than 5 Hosts and 50 VM’s.

Fast forward again…

You now want to move into production – which means the database will have to be migrated to one that will be able to accommodate growth. Supported databases (for the current version 5.1a) are Oracle and vPostgres.

In most companies I have encountered, the databases that are used in production will be either Microsoft SQL or Oracle.

So how can you migrate out of the vPostgres database?

So here is the catch!!

VMware has no documented way to move the data out of the Embedded vPostgres database into a production, supported database.

Actually – there hardly any documentation – except perhaps this KBabout how you should backup a VCSA appliance.

No export, no migration,  nothing. This means that if you made the assumption of trying out a VCSA and then moving into production…

Yep you guessed correctly – everything has to be rebuilt – again. If your database goes kablooie then pray that you have a full image backup.

Re-register all your hosts, re-create permissions, rebuild the folder structure, etc… etc... etc…
(not that this is not possible – I actually wrote a script quite a while back for this - vCenter PowerCLI Migration Script) it just will take a lot of tinkering. Not to mention of course that you will lose all your statistics collected until the migration.

If VMware could create a migration script between DB2 and vPostgres for the upgrade from 5.0 to 5.1 – then I should hope that they will provide a script to move out of vPostgres as well.

As always – if you would like to share your thoughts – please feel free to do so in the comments below.


Host Profiles Should Become a Standard Feature

Can you name the features that are only available in vSphere Enterprise Plus edition?
If you need a reminder you can get the information here

Feature Comparison

A while back I asked for your feedback in this poll

Twitter Poll

I have to say that I totally agree with the results, and I was not at all surprised by them either

If I were to rank the top 3 features of Enterprise Plus Edition they would be (in order):

  1. dvSwitch
  2. Storage DRS

I am not saying that the other features are not important – but these would be my top 3. In my humble opinion I think that these are the 3 features that are most used by the enterprise market (or whoever purchases Enterprise Plus licenses).

So let’s get back to the tile of this post. Take a look at this Twitter conversation.

Host Profiles conversation

Every single word in this thread is absolute gold.

Host Profiles. They allow you to create a "template" for your ESXi hosts and with the click of a button, or the Enter key (it should be scripted of course) you can set the configuration of your ESXi host – practically down to the last bit. All your hosts will be the same and of course you can have different templates for different purposes.

But why does this have to be a feature only available in the top-tier editions?

As you can see in the poll above – people do not prioritize this as a highly useful feature, that does not mean they do not use it (although that could possibly be deducted from the poll – that would not be accurate).

From my perspective. I do not use Host Profiles – for the following reasons.

My ESXi builds are all exactly the same. I have them down to a fine art, usually a custom kickstart script which configures exactly what I need. The post-configuration is then done with Powershell. How long did it take me to perfect it? Well .. a while – but now that it there – a deployment is 100% accurate – 100% of the time. Always works (as it should). Host profiles – works almost all of the time, and was just too picky to get it working. I have heard this from a great number of people – so it not just me.

Most people I know do not use Host-Profiles to check Host compliance. If they are already using it – it will be for deployment – not for compliance – and if my deployment is already covered by some other method - why do I need to use Host Profiles? Before Autodeploy was introduced, we used other tools, like Ultimate Deployment Appliance or the ESX Deployment Appliance. They were great solutions – for their time, but I suppose since Autodeploy was released – they are not really used for ESXi deployment that much any more.

Having your hosts configured exactly the same – should be a standard feature. It is in VMware’s best interests. It means less support calls, less anguish from customers, better customer adoption – there are more than enough reasons. Over the years a large portion of the “Enterprise” features have slowly but surely been moving down to the lower editions vSphere Replication, HA, vMotion, Edge, FT, sVmotion – just to name a few. These are all features that were available once upon a time in the Enterprise and above editions and are now part of the Standard product. I think VMware realized that this was what every customer was asking for, allowed for better customer adoption – and placed their features on par with those of Microsoft who were constantly badgering VMware for being too expensive (they still are and probably always will).

We have evolved, technology has evolved and today, Host profiles can be done other ways – be it in house scripts or the way I think it will evolve in the future - by an external 3rd-party tools (such as Puppet/Chef - I expect that Nick Weaver will have some news for us on this front at VMware PEX). A large number of companies are already using these tools for all their machine life-cycle management for their physical servers (if they have any), for their VM’s – and soon I assume for their Hypervisors as well. I foresee Pretty Pleasethat the day is not far off when these tools control not only the provisioning of VM’s to cloud environments (like they do today) but also control the configuration of these cloud environments as well. After all – it is all API’s so how far off can we really be?

The real Enterprise features should and always will stay in the top-tier editions. The dvSwitch is a must-have for any big environment – specifically if you are using vCloud. SIOC and NIOC as well.

I think it is time to review what should actually be considered an “Enterpise Plus” feature.

And while we are at it .. VMware this applies to Autodeploy as well.

Pretty please??

Please feel free to add your comments and thoughts below.


Welcome to Our New Sponsor - Zerto

I would like to thank Zerto and extend them a warm welcome for sponsoring my blog.

Below is a (very) short video explaining what they do

Zerto Hypervisor-Based Replication from Zerto on Vimeo.

I first heard about Zerto from their presentation at Tech Field Day 6.

Zerto is an Israeli Company based out of Herzliya. I first met one of the co-founders Oded Kedem while sitting down for lunch at VMworld 2011 in Las Vegas. I have also had a number of talks with their VP of Marketing & Products Gil Levonai and with their Online Marketing Director Fara Hain over the past few years.


I was not asked to write about or recommend Zerto’s products. This post is to express my gratitude to Zerto for becoming a paying sponsor (amongst others) that help to cover the costs of my blog.
I did receive a bloggers t-shirt from Zerto at VMworld ;)


The 99c/Hour Computer vs. Buy Your Own Server (BYOS)

Amazon announced a few days ago the availability of EC2 for In-Memory Computing - The High Memory Cluster Eight Extra Large Instance, here are the specs:
  • Two Intel E5-2670 processors running at 2.6 GHz with Intel Turbo Boost and NUMA support.
  • 244 GiB of RAM.
  • Two 120 GB SSD for instance storage.
  • 10 Gigabit networking with support for Cluster Placement Groups.
  • HVM virtualization only.
  • Support for EBS-backed AMIs only.

Pricing starts at $3.50 per hour for Linux instances and $3.831 for Windows instances, both in US East (Northern Virginia). One year and three year Reserved Instances and Spot Instances are also available.
High-Memory Cluster On-Demand Instances
Eight Extra Large $3.500 per Hour

High-Memory Cluster Reserved Instances
Eight Extra Large $2474 - $1.54 per Hour (1 year) - $3846 - $1.225 per Hour (3 years)

This looks pretty much like a typical High-End server I would buy for a high-performance application – or an ESXi Host.

Let us take those numbers for a minute and translate them to something that we actually can use.

On Demand – $3.5 x 24 (hours) x 365 (days per year) = $30,660

Reserved – $2,474 + $1.54 x 24 (hours) x 365 (days per year) = $15,964.40 (1 year)
Reserved – $3,846 + $1.225 x 24 (hours) x 365 (days per year) x 3 (years) = $36,039 (3 years)

Firstly – it is obvious that the Reserved instances are so much cheaper than their On-Demand counterparts – so proper planning can save a whole lot of money on AWS. I assume the serious AWS users will use Reserved instances.

(****** of course this does not take into account everything else like IP addresses, IN/OUT data transfer, monitoring, etc. ******)

I checked what a similar hardware spec would cost for BYOS (Buy Your Own Server)

The price was $23,814 – this was list price - including 3 years 24x7x4 on-site support. (No Enterprise actually pays list price – and a 30% discount would be more than reasonable (if not more) – which would bring the price to $16,670).

And to be completely fair convert this into per hour:
$16,670 / 3 (years) / 365 (days) / 24 (hours) = $0.634 (per hour)

I could not find many (reputable) hosting providers that were offering something similar to this configuration online so that I could not compare properly the cost of a such hardware as a Hosted Dedicated Server.

The price of the hardware is not the only cost involved of course, and there are other elements should be added in (some of them listed below):

  • Lead-time
  • Administration
  • Setup & Installation
  • Maintenance & administration (people)
  • Power & Cooling
  • Backup & DR
  • Network

And also having the flexibility of not actually having to run such a machine 24x7 was not factored  – but I do think it is safe to assume – that if you are going to actually need such an AWS instance – it will be highly utilized.

So I cannot say that BYOS is half the price – because of all of the above. It could be cheaper – but it also99c could be more expensive. Mileage will vary.

I can’t help feeling that this reminds me of the 99 cents marketing methods that stores use. It always seems cheaper than $1 and $1.54 does not really seem like a whole lot of money to spend per hour. But when you accumulate all those hours into days, weeks, months and years – it doesn’t look that bright and shiny any more.

(As a side note – I recently learned that one of our departments had spent approximately $500,000 on AWS in the past 18 months – which is not what they thought it would cost them when they started out)
We are (too much so – unfortunately) a consumer world, we buy things. Vendors know that – and try every trick in the book to get us to buy as much as they are able to sell. AWS sell cloud instances.
Just because things are there – and look like they are cheap does not necessarily mean that they always are.

To be honest – I think it would only be fair that AWS (or any cloud provider for that matter) should give prices not only per hour, but also per day and per month. This will be better for the consumer and easier for us to compare.

Crunch the numbers!

Comments and feedback are always welcome.