I recently spent some time on vCenter Orchestrator and really liked it with nice integration with vSphere Web Client, even though the Web Client has to improve quite some before it can overtake the standalone vSphere Client.Coming from the programming background, I find the workflow design is pretty easy to understand. Although targeted mostly for people with no programming background, workflow has in fact stronger typing than typical scripting. That may explain why having programming background helps a lot to quickly ramp up on workflow development.
During the Microsoft Management Summit last month, I had an interesting chat with Rakesh Malhotra who is the VP product of Apprenda. It made me to think more about two important technologies: virtualization and PaaS. As we know, virtualization is almost a must for IaaS. Will it be the same case for PaaS?
Pure PaaS or PaaS over IaaS
The software-defined networking is the new buzzword for network centralization, which is also known as OpenFlow or network virtualization. The idea is to centralize the control to a server (or a cluster of servers) called controller.
With the acquisition of Nicira by VMware, the software-defined networking has caught many eyeballs from the community. From there, VMware extended it to a new vision called software-defined datacenter which includes three elements of computing: compute, network, and storage.
After server virtualization took off, virtualization became a buzzword which made it easy to get attention from market, and for startup companies, to get funding. Therefore you’ve seen many technologies claiming it’s * virtualization mostly for marketing purpose. Network virtualization is such a case. The even newer term for it is called software defined network, or simply SDN.
It’s Centralization, Really!
SNMP trap provides a very useful way to monitor vSphere. You can use either GUI or vSphere API to configure up to 4 trap receivers. With that I can use alarm to monitor events or state changes.
If you use vSphere API to add SNMP receivers, you will need the OptionManager managed object. The related options you want to set are: snmp.receiver.1.name, snmp.receiver.1.port, snmp.receiver.1.community, snmp.receiver.1.enabled. There are 3 more sets with similar names but different numbers (2, 3, 4).
While playing vSphere API last week, I got into an issue that I cannot disable the SSH server with Firewall APIs (see HostFirewallSystem). The following call would throw an exception:
There are many other different services like “sshClient” whose ports can be enabled and disabled via the API. As a nice surprise, they all work just fine.
To my curiosity, I attended the session “Building UI Add-ins for System Center 2012 SP1 Virtual Machine Manager” by Jonobie Ford, who is the program manager of the add-in SDK. As you may know, I wrote several docs on vSphere Client plug-in and helped many partners to develop their plug-ins during my days at VMware.
After playing with the vCenter appliance simulator feature documented by William, I got into a show stopper that vCenter service (VPXD) could not be started. I don’t think it’s related to the simulator feature at all. My guess is that it’s caused by a sudden power off of the virtual machine but didn’t try to reproduce the problem that way – I care more to fix it than anything else.
I flew to Vegas this week for Microsoft Management Summit 2013, which happens to be in the same hotel (Mandalay Bay) as VMware Partner Exchange one and half months ago. The organizations and activities of both conferences are pretty similar – keynotes, breakout sessions, hands on labs (HOL). It’s pretty exciting to learn new technologies and meet new people.
Hands On Labs
In previous posts, I’ve covered an Java API called JGIT for working with GIT. Besides the low level APIs, JGIT also supports high level command line like interfaces. If you know how to use the GIT command line, you can use the APIs. Note that it’s different from calling GIT commands or any other commands from Java code.
Here is a sample code I wrote to try out the APIs. Give it a try and you will like these high level APIs.
For most people who use the VMware Player, DHCP is good enough for the NAT network. That means the IP addresses of your virtual machines may change after each powering on.
What if you want to have static IP addresses? It’s pretty easy as long as it’s in the same subnet. For example, if the VMnet8 has IP address of 192.168.47.1, your virtual machines should be configured in the same network say 192.168.47.x, where X can be any value from 3 to 254 (2 reserved for gateway, 255 broadcast by default).
If you run VMware Player, you would have 3 networking options for virtual machines running there: Bridged, NAT, Host-Only. In the latest 5.0.1, I also found a new one: LAN Segment. This blog has a nice explanation on these three settings if you want to get more details.
In most of cases, I use NAT for networking because the virtual machine can have Internet access which allows me to install additional software as needed. By default, VMware Player uses DHCP to dynamically assign IP address while using NAT. So you cannot guarantee to get same IP address after each rebooting.
While reading Michael White’s newsletter (a weekly digest regarding VMware technology that I find very useful and read regularly) a while back, I came to know a small emulator tool for SDN called MiniNet (http://mininet.github.com/). I got a little time to read and play with it over the weekend and though it’s worthwhile to share my experience here.
Download the Virtual Machine
I got an interesting request from one of the enterprises which uses vijava in their product. Although there are downloads for binary and source packages on the sourceforge Web site, they still would like me to create the checksum as I am the trustable source for that. As I was told, the checksum is required by their build team. I don’t know how is exactly used, but I decided to help out anyway.
I went to the VMware Partner Exchange in Las Vegas last week. It’s always nice to see old friends and colleagues in the conference that I’ve been attending consecutively since I first joined VMware in 2007.
I spent quite some of my time in the hands on labs (codenamed Project NEE), which turned out to be a great experience. I took 7 labs covering the Nexus 1000V with VXLAN, vCenter Orchestrator(vCO), DynamicOps (now has a fancier name called vCloud Automation Center), etc. With the bundling and deep integration of the vCO into vCenter Web Client, I think the prime time for vCO as the automation tool for vSphere has finally come.
In my last post, I introduced how to run a very simple HelloWorld script with Puppet 3.1.0 on CentOS 6.3. Although it shows how Puppet works, it’s not really how Puppet is used in real world. To get the most out of Puppet, you want to run the client/server mode where you have a master and many agents.
Part 1: Install Puppet server
Puppet is a very well-known configuration management tool that has been adopted by many enterprises and service providers. VMware recently invested $30M in Puppet Labs, the company behind it. It’s clear that VMware needs such a tool if it wants to grow in data center space.
I actually got a book from last year’s PuppetConf in San Francisco and browsed through it on my flights. As with any other technology, reading it does not mean getting it. To get my hands dirty, I played with it in my home lab last week.
In my previous post, I introduced a sample showing how to use JGIT Java APIs to diff two versions of a same file in repository. The JGIT Java APIs can do more than that – it can actually diff two text files that are not even controlled by GIT.
Here is a short sample code on how to do this. Again, it’s not the main use case for the JGIT APIs. After all, it’s mainly for GIT source control system itself. You can always use other diff APIs for this purpose. However, if you already have JGIT included, this can be handy.
Last week I introduced the JGIT Java API with a simple sample illustrating how to read content from HEAD. If you have multiple versions of a source code or text file, you may want to see their differences. An easy tool for this is the standard diff.
The JGIT Java API has built-in support for you to generate diff between any two versions of a file, be it a source code, properties file, XML file, or any other text files. Here is a sample that shows how to do this.
GIT is a source code control system created by Linus and others for managing Linux kernel development. It becomes one of the most popular version control systems especially in the open source community. Most developers use command line or the plugins to IDEs like Eclipse, NetBeans. I think even Microsoft VisualStudio has add-on for connecting to GIT, but I haven’t checked it.