Archives For 30 November 1999

Me and two colleagues went to Amsterdam today, for a 1-day CFEngine-3 training. I’ve worked with configuration management before (Puppet), and my goal is to explore alternatives to be able to pick the right tool. Today’s quick overview training was a nice opportunity to get into CFEngine and meet some people behind the scenes.

Impression of CFEngine training

Impression of CFEngine training

 

Diego Zamboni, author of the book Learning CFEngine 3, taught us what the concepts behind CFEngine are, how the language is build and how to get started. He demo’ed a lot of things and answered all of our questions. It was a very informative training that really inspired me.

What surprised me most, was that CFEngine is actually a pretty nice monitoring tool! A smart one, because it is either able to fix things, or is able to report it. All in all, I’ve to say I’m really impressed by CFEngine 3.5. We have now inspiration to create a good plan and then start working on implementing it. Looking forward to it!

Thanks Diego and Carsten for this training and the nice drinks we had afterwards 🙂

Lately I’ve been coding to automate the deployment of Virtual Machines that will run in our cloud. It’s inspired by blogs and code from Jason Hancock but implemented in a different way to meet our specific needs. Since CloudStack has a very flexible API, you can make it do anything you want. It works pretty cool so far.

From a command line script we can deploy a new VM with a certain “role”. This role has a name, like “web server” or “test-vm-db” and contains the OS template name, the datacenter name, the networks to connect to, the hardware offering (CPU/Memory/Disk) and the account and domain to use. These are all CloudStack specific settings. When calling the deployVirtualMachine() API command, CloudStack will create a VM with exactly these specs. We use a simple php cli script to add a new server, like this:

Result:

Since it is in a specific domain (defined by the role), other users in that domain can “see” and work with the new VM immediately. When you deploy for a client, they will “see” the new VM like this:

When the VM boots, it is receives its role name, “web server” for example, and sends this info to Puppet. This way, Puppet knows how to configure the new VM. It will do so and when it’s finished you have an exact same “web server” as the others. Run the script again and you’ll have another one. Puppet does not only do initial configuration, it will make sure the configuration stays consistent across the all servers it manages. When you want to change a setting, Puppet distributes it and makes sure it’s the same on all servers. All automatically!

Imagine the power behind this concept. All of a sudden you can create a script that can deploy a new web server in just minutes. Now even the loadbalancer itself can spin up a new web server to handle the higher load it receives. Or destroy a web server when there are too many idle web servers. That’s what you call elastic!

What you need to build this yourself is:
1. PHP CloudStack Client (to talk to CloudStack from PHP)
2. CloudStack API docs
3. Script to grab meta-data when VM has booted

Please see Jason Hancock‘s blog for some working examples of how he implemented it. As I said, CloudStack’s API is very flexible. But you can even extend the API, if you want to go further. Thanks for the inspiration Jason!

Today while I was running I realized I’ve been doing a lot of coding lately. Coding our new infrastructure to be exact. I remembered Kris Buytaert’s talk about DevOps back in February when I was in Antwerp. One of the key statements is that there are ‘sysadmin coders’ and not ‘sysadmins’ and ‘coders’. The only way to achieve great results, is when these two work together and communicate with each other. The idea’s behind this are called DevOps. IT Operations starts using code to manage configurations and infrastructure instead of doing it by hand over and over again. Thanks to CloudStack and Puppet this is now possible. Ideally, you would not have two groups, but one. Stephen Nelson-Smith from jedi.be describes it like this:

So, the Devops movement is characterized by people with a multidisciplinary skill set – people who are comfortable with infrastructure and configuration, but also happy to roll up their sleeves, write tests, debug, and ship features. These are people who making connections, because they can – because they have feet in multiple camps, they can be ambassadors, peace makers, facilitators and communicators. And the point of the movement is to identify these, currently rare, people and encourage them, compare ideas, and start to identify, train, recruit and popularize this way of doing IT.

More on Stephen’s blog..

I didn’t realize back then what this would mean because I was focused on CloudStack and the tools around it. But it is not only about the tools, it’s the way you look at managing infrastructure and development. What we’re doing looks like DevOps but we’re not there yet ;-). In the coming weeks I’ll spend some more time reading about DevOps to see how we can implement this in our organization. Because I really believe this is the way to go..

Goint to Antwerp by train

Going to Antwerp by train

Thursday February 2nd me and colleague Pim went to Antwerp by train to attend “Build an Open Source Cloud-Day, hosted by INUITS the following day.

The programme looked promising and I really looked forward to meeting David Nalley and Mark Hinkle from Citrix’ CloudStack. The last months we kept an eye on  CloudStack: tested their current 2.2 release, and the 3.0 beta’s. Although we had CloudStack more or less up and running, there were still many questions to ask and many things to learn. This was a perfect opportunity for that.

Dinner at Brasserie Appelmans

Dinner at Brasserie Appelmans

But that would follow the next day. So we first decided to have some dinner in Antwerp. A friend of mine suggested Brasserie Appelmans and that really was a good suggestion! Service was friendly and nice also. 🙂

Back in the hotel wifi wasn’t working. The reception didn’t know why (only got a link-local ip so probably DHCP problem). With some guessing and trying managed to get it to work. Assign yourself an ip in the 192.168.0/24 range, .1 as gw and you’ll be good to go 😉

Crash Course on Open Source Cloud Computing

Crash Course on Open Source Cloud Computing

The following morning we went to the “Build an OpenSource Cloud“-event. Mark Hinkle kicked off with an interesting “Crash Course on Open Source Cloud Computing“. He showed us what a cloud really is, what OpenSource tools are available and what makes a cloud scalable. Scale up (add more compute nodes) and scale out (using loadbalancing). Mark talked about PaaS and IaaS, and listed associated Open Soure software solutions. I found it really interesting and refreshing to kick-off with such a broad overview of Cloud Computing!

Xen Cloud Platform

Xen Cloud Platform

Next, Lars Kurth told us all about Xen, Xen Cloud Platform and Citrix XenServer. A lot of hard work has been done in getting Xen into the Linux Kernel and in building Citrix XenServer from the OpenSource code, although a lot of work still needs to be done.

Both Citrix XenServer (the commercial supported version) and Xen Cloud Platform are supported by CoudStack and integrate nicely.

Build Your Cloud -CloudStack

Build Your Cloud -CloudStack

Lunch time!  Wow – we’ve had a really tasty lunch 🙂 During lunch I had the opportunity to chat with David Nalley and Mark Hinkle about CloudStack and our experience with it so far. They kindly answered all of our questions and had some nice suggestions, too. It gave me the feeling CloudStack is the best choice for us. A good product and nice and friendly people behind it. Great! I’ll write in some more detail about CloudStack and our progress with the project in a later post. After lunch, David presented and demo’ed both the current and upcoming CloudStack release. Good news: CloudStack 3.0 release is targeted at the end of the month 🙂

Automatic Configuration of Your Cloud with Puppet

Automatic Configuration of Your Cloud with Puppet

I’ve to be honest – the main reason to come was CloudStack and meeting up with David and Mark. But the other presentations added up a nice broad overview and even changed the way I look at building our Cloud. So that’s cool!

Carl Caum really impressed me with his Puppet presentation. He’s a pretty good presenter and came with solutions to problems that many sysadmin’s have: there’s a limit in how many servers you can manage by hand. Of course with some smart automation this number will go up, but it just isn’t scalable. And worse, the systems then aren’t always the same which may lead to unexpected trouble. Puppet is a system for automating system administration tasks that makes our life easier!

Puppet overview

Puppet overview

This is how it works: from a central location – Puppetmasterd – configuration of groups of servers is managed. Want to change a file, package or setting? Do it once, Puppet makes it happen, and makes sure it is always in that given state. So, you tell Puppet “what” you want, not “how”. It’s pretty cool stuff that I’ll look into in the coming weeks.

The presentations made me realize administering servers (VM’s) in the Cloud is very different compared to traditional sysadmin work. No longer you must think of servers as something that stays there all the time. VM’s should be spinned-off when needed and destroyed when no longer needed. For this to work, configuration and user-data must be separated from the VM itself. The loadbalancer has the public ip and decides how many VM’s are needed to handle the load. Via API calls it can deploy new VM’s. The VM therefore should be easy to re-deploy. Puppet & CloudStack together can do that! Now, that is true scaling-out.

David Nalley also presented some slides about Zenoss CoreMonitoring the Cloud with Zenoss Core“. There are three really cool things about it:

  1. it integrates nicely with CloudStack
  2. it has an API (whoohoo! Monitoring system with an API!)
  3. it is compatible with Nagios-plugins, so previous work in that area can be re-used.

To me, it seems this is gonna be our new monitoring system 🙂

Devops the Future is Here

Devops the Future is Here

The final presentation was by Kris Buytaert from INUITS.

Kris had a really interesting talk about Devs (software development) and Ops (IT-Operations) and how the two should start working together. “DevOps” is an emerging set of principles, methods and practices for communication, collaboration and integration between the two.

Look here for all the details!

Snow in Antwerp

Snow in Antwerp

When we came outside there was a nice little surprise for us there.. All of Antwerp had become white! That was some sort of a challenge to get back to The Netherlands, since many trains were delayed or cancelled.

After having a nice dinner at Antwerp we managed to get a train and only 4 hours later we were home 😉

It was an inspiring day and I’ve learned a lot. It motivates me to get our CloudStack cloud ready and implement it the way a Cloud is meant to be.

Thanks guys!