posted

1 Comment

By John Ellis, Chief vCloud Architect at BlueLock

A cloud based infrastructure can save an organization a great deal of time and effort in building servers and provisioning new resources. While this can be fantastic for the build-out phase of a project, how can a virtual datacenter make maintenance easier? We may perform deployments a couple times a year, but deployments and configuration tweaks may occur much more often.

We have seen how vCloud API can expose more of our data center infrastructure, not only by interacting with the vCloud API directly but with third-party application frameworks as well. This same exposure can help us manage running vApps and keep them up-to-date.

Programmatic Configuration and Management

There exist several commercial and open-source applications that help with application management, but a particular cloud-ready framework by the name of Pallet has gained increasing interest by organizations embracing DevOps. Pallet is a tool that allows functional programming to drive the deployment, configuration and management of cloud infrastructure.

Take the following example of Pallet deploying a web application to a given server:

(core/defnode webapp

"Jettison our fancy Web application into tcServer"

{:inbound-ports [8080 22]} ;; 8080 for tcServer, 22 for SSH

:bootstrap (resource/phase
    (crates/bootstrap))

:configure (resource/phase
    (crates/tcServer))

:stop-tcServer (resource/phase
    (service/service "tcServer" :action :stop)))

:deploy (resource/phase
    (crates/tcServer-deploy

    "../artifacts/awesome_webapp-1.0.war"))

:start-tcServer (resource/phase

    (service/service "tcServer" :action :start)))

In only a few lines of code we can configure a new tcServer application server and deploy a Web application into our running virtual machine. Pallet is even smart enough to discern if tcServer has been previously installed and skip directly to the “deploy” section.

Another very robust solution for management is Chef, an agent-based infrastructure automation toolchain that can manage nearly every tweak and build under the sun. One could bake the Chef agent into your vApp template, then have each new template announce itself to a Chef master server. This master server can then cook up new virtual machine configurations using “recipes,” a series of instructions that edit configuration files, copy packages or execute commands. Chef offers centralized management of your infrastructure and role-based management for each machine in your data center.

Automated Deployments

If your primary focus is managing deployments, both Cargo and Murder can push out new code quickly and effectively. Cargo is largely geared towards the rapid deployment of applications into managed Java containers, while Murder is a general-purpose deployment tool constructed by Twitter and based on BitTorrent for highly distributed deployments to hundreds or thousands of nodes.

Pallet, Chef, Cargo and Murder all share a goal: allow for push-button deployment of your applications. A single command should ultimately allow you to roll out changes and even revert them in case problems occur. Manual configuration hacking or file transfers should be a thing of the past, and instead a repeatable, automated process should make deployments become a routine process. vCloud Datacenter adds the level of consistency to your infrastructure that is normally so difficult to enforce, allowing a uniform management structure over an entire virtual data center.

An agile IT operation requires portable machine management, rapid provisioning and automated management. The realities of data center management make this a challenge in the physical realm – sifting through a rat's nest of ethernet cable or trying to find A/B power outlets can make rapid provisioning a daunting task. Moving business operations that require more dexterity into the cloud opens the door to the freedom that DevOps can bring, and can tear down the walls between developers and IT operations.