DevOps is a emerging trend in the IT department. In various conferences you will find a DevOps track or sessions with standing audiences trying to listen to the speaker or to take pictures of the PowerPoint slides.
DevOps is a new word derived from development and operations.
Development + Operations = DevOps
Why putting these 2 together together?
Thanksgiving 2014 just went by and yesterday was "Black Friday" plus 2 days later it will be the "Cyber Monday". Demand on eCommerce increases tremendously during these few days and then comes Christmas which is also a high season for online shopping (although the true meaning of Christmas is not to give gifts). Consumers of the IT services is demanding for faster service to adjust to changes. User are also demanding for faster resolutions of problems.
The response to this new IT demands is to put Development and Operations into a team and work together to get things resolves. Developer is reward by putting in new features. Operations is reward by providing a stable system. Often times the goal of a developer and an operation person will conflict with each other. This will affect how fast a new feature can be rolled out and how fast problem found in production can be resolved.
DevOps provide a new methodology in which problems are broken into smaller problem so that it can be resolved faster. It also provide an consistent environment for development and production and this is where Configuration Management Tools comes into the picture.
There are 2 important concepts that we have know about DevOps. The first one is that DevOps is a culture. It is about people's mentality more than a fix methodology or check list to follow. Each organization is unique and thus how DevOps is implemented will be different. The second one is that there is no such position as a "DevOps Engineer". There will continue be Development Engineer and there will continue to be Operations staff. DevOps is only to put them together to work as a team and change how things are done - breaking problem into smaller problems and to provide continuous integration/feedback and delivery of new feature/bug fixes in a timely manner.
image source: http://www.appdynamics.com/blog/wp-content/uploads/2013/06/DevOps-infinity-loop2.png
I highly recommend this book "The Phoenix Project" that talks about the subject of DevOps in a novel form. I finished the book over one weekend. I cannot put down the book because it was so interesting. Instead of theory or opinion about DevOps, the book talks about a story of a company's IT problem and how different people solved that problem with the practice of DevOps. It also went through different people objecting to the idea of DevOps and eventually saw the value of DevOps. After reading this book you will feel that you have went through implementing DevOps practice in your company's IT department with first hand experience and perspective. My wife thought something was wrong with me on that weekend.
Configuration Management Tools
Configuration Management Tools is an essential part of DevOps.
It is being used to automate tedious and/or repetitive tasks. This help to avoid human errors. All Configuration Management Tools has built-in version control and change history. When things goes wrong we can easily roll back to the previous working version. With change history we can also trace back to the person who made the changes and to see what is the reason that a change is necessary.
Another advantage of Configuration Management Tools is that it is the up-to-date documentation of the entire system. A new member of the Operations team can just look at the Configuration Management Tool and will be able to grasp what devices are in the system and how they can be configured.
Configuration Management Tools can also shield the user from knowing the details of different computing platform such as Red Hat and Ubuntu.
Popular Configuration Management Tools are Puppet, Chef, Ansible, Salt.
What is Puppet?
Puppet is an open source Configuration Management Tool (CMT) used to configure mostly Linux system. In the beginning, it is not very useful to use Puppet to configure a Windows system because the Windows system needs to be rebooted several times. Recently this has been getting better and Puppet can work the the DSC (Desired State Configuration). Puppet also has good support for configuring VMs in Microsoft's cloud offering - Azure. Puppet can also be used to configure Docker containers. It can also be used to configure networking devices such as F5, Juniper or Arista Network.
Note: some of the feature may only be available in the commercial version of Puppet - Puppet Enterprise from PuppetLabs.
PuppetLabs is based on Portland Oregon with more than 300 employees. It packages the open source Puppet into a commercial product called Puppet Enterprise. As the name indicate this commercial product has enterprise as the target user and add enterprise oriented feature such as Graphical User Interface, Security feature - Role Based Access Control and task orchestration capability. The first 10 nodes of Puppet Enterprise is FREE. As of this writing Puppet Enterprise is on version 3.7
image source: http://puppetlabs.com/wp-content/uploads/2013/05/puppet_node_manager.jpg
Puppet Enterprise also has the reporting capability such that user do not have to manually go through the log files to see might went wrong when there is a failure. It can also generate a inventory of the system that is managed by Puppet Enterprise.
Will continue to look into other aspect of Puppet in the next blog post (Part 2).