Most of my projects I’ve worked on since joining EMC Consulting have involved ALM of some flavour but having worked on a couple of projects which utilised public cloud services I have found that I need to start considering configuration management as a whole end to end process.
You may well ask what configuration management is.
Well I’m not talking about the ITIL definition:
The process of identifying and defining the Configuration Items in a system, recording and reporting the status of Configuration Items and Requests For Change, and verifying the completeness and correctness of Configuration Items.
Configuration management as examined in this post is defined as
The tracking and controlling of changes of the infrastructure (be that a virtual machine on your local virtual server hosting solution or a public cloud image) and the software/ applications that constitute a service.
The key point is that in the definition I am talking about we are talking about the how to as opposed to the recording of. Related but definitely different activities and yes the how to does feed into the Recording of so it’s all part of the same requirement in the end.
By using appropriate configuration management solutions one can automate and scale the deployment of services thus minimising the administrative overhead associated with this.
ALM tools are intrinsically part of configuration management but that is far too big a subject to try and shoe horn into this post so I won’t even attempt to. Needleless to say it’s assumed here that the applications are developed and deployed using an appropriate ALM toolset. The ALM process is part of the overall configuration management process.
With the availability of Public cloud IaaS services like AWS which supplies autoscaling features configuration of your estate can be achieved by baking in core services into the AMI and then using scripts perhaps leveraging packages like cloudinit to further modify the instances as they spin up. This is a simple approach and works well for small estates of around 10-15 server images or less. I have used this approach successfully but I am aware of the limitations of this approach namely in terms of managing a large number of EC2 hosts with varying roles .
When you start looking at larger numbers of server images and perhaps a mixed environment of windows and Linux servers with a range of complicated applications an enterprise configuration management solution is needed.
Using an enterprise configuration management solution will require a large commitment and will need complete buy in for it to be successful, thus the selection needs to be carefully considered Some of the areas of a very large list which need considering when making this selection are:
· Skill set of the staff who will be using the tools
· Target environment
· What exactly do you want to automatically configure
To give the requirements justice I would need to write a post just for that but as I want to get my hands dirty sooner rather than later I’m going to gloss over that.
In the open source world there is good choice of configuration management solutions but selecting the right one is anything but straight forward. Whichever solution is chosen will need considerable investment in terms of getting up to speed, probably learning a new scripting language and creating the configuration files that allow you to manage the changes.
Configuration management for windows systems tends to be a relatively straight forward affair where you can use Powershell to manage the various tasks, make use of various windows specific point solutions and ideally if you have the budget and resources System Center Configuration manager with System Center Operations manager as an enterprise solution. (You can of course resort to third party solutions).
If you use VMWare or Hyper-V you can hook powershell scripts into those. Powershell is embedded into products from Exchange to SQL server so any Windows System administrator soon learns to love Powershell which is an incredibly powerful scripting language.
Over this series of posts I will be looking at how to use an open source configuration management solution to manage an EC2 hosted environment.
I will be coming at this from a windows background being familiar with power shell and Operations manager. My goal being to
· Find & implement an open source configuration management solution that fits the flexibility offered by hosting on EC2
· Allows me to automatically configure a set of servers and their associated services and applications from a central point
· is not too painful to get up and running
· Is cost effective in terms of resource required and costs
· Is able to manage both linux and windows
There are a number of open source configuration management solutions which could do the job. The viable open source solutions I have found all tend to be developed initially for the Linux arena and any support for windows is patchy to say the least still I’m known to persevere.
I trawled through a list of potential solutions whittled it down and eventually settled on Chef. Again I could go on and write another post on why I selected Chef but that would delay my journey which begins in the next post in this series now that I’ve set the scene.
I guess if you're a regular reader of this blog then you know how varied my role is and how much I enjoy it . If you're interested in joining us here at EMC Consulting and getting the same job satisfaction I do then look no further and contact Michelle as we're recruiting now for a Platform Architect to join our over worked team see Michelle's blog