DevOps with Puppet, Chef and Ansible
As DevOps culture is being adopted inside IT industries, so does the interest in automation platform well suited to the speed and agility commonly promoted as DevOps prime benefits and that means a growing need for IT pros not only willing to embrace the mind set and methodology behind the DevOps approach, but also able to DevOps skills with new software tools such as Chef, Puppet and Ansible are among the most outstanding configuration management and deployment automation tools. Each one of these tool has its particular strength. These automation and orchestration make life easier for any size of infrastructure.
While choosing the best suitable, find the tool that works the best for you, because it makes you more productive and which tool you need, depends on your requirements and your current environment. Tools like Chef, Puppet, Ansible aren’t necessarily just for DevOps, their use in IT organization can lay the foundation for speeding up area like application delivery, patching and so forth.
Bellow is the summarize a few strength of each tool and a couple of things that might influence you towards using one over the other :
Puppet is slower, but most widely used and support for multiple OSes. Puppet is a configuration management system that provides a way to define the state of IT infrastructure, and enables automatic enforcement of the correct state. Arguably it enjoys the biggest mind share of the three. It’s the most complete in terms of available actions, modules, and user interface. Puppet represents the whole picture of data center orchestration, encompassing just about every operating system and offering deep tools for the main OSes
>> Runs on Linux, CentOS, Debian, Ubuntu, Fedora, BSD, MacOS, Windows and others.
>> Uses its own “easy” syntax, the Puppet DSL or Domain Specific Language. You can use Custom Ruby modules too.
>> Extensive reporting capabilities
>> Large library of existing modules in the Puppet and modules are of mixed quality.
>> Web user interface is only available in the enterprise version
>> Simple architecture: Puppet server and Puppet agents
>> Puppet provides an efficient and scalable software solution for managing the configurations of large numbers of devices.
>>System administrators use Puppet to manage compute resources such as physical and virtual servers and network devices.
>> Puppet is deployed using a client/server arrangement, where the server or Puppet master manages one or more client nodes.
Chef is complex, but fast and powerful, it is an automation platform that transforms infrastructure into code. Many DevOps choose to adopt Chef because it grant them to treat their system like object because with ease of use comes a lack of robustness. Chef is similar to Puppet in terms of overall concept, in that there’s a master server and agents installed on managed nodes, but it differs in actual deployment.
>> Extensive Ruby syntax for configuration “recipes”: this brings a higher learning curve, but more power
>> Web user interface is standard and free.
>> Architecture is more complex: you need a Chef server, Chef agents and a Chef workstation for configuration and management.
>> Large library of existing recipes of mixed quality.
>> Simple cross-platform and self-contained installation procedure.
>> Faster performance.
Ansible is written in Python and only requires the Python libraries to be present on the servers to be configured. It doesn’t support Windows but very easy, fast and light-weight and completely different from Chef and Puppet. The focal point of Ansible is to be streamlined and fast, and to require no node agent installation. Thus, Ansible performs all functions over SSH. A lot of modules are available ranging from system, database to cloud management. It’s relatively easy to write your own modules. A lot of languages are supported but if you are familiar with python, it won’t take you much time to create your own module. They support all the core services from major cloud providers such as AWS, Rackspace, Digital Ocean, GCE, OpenStack etc.
>> Ansible is Python-based
>> Youngest of these three technologies, hence with the smallest community
>> Works without agents, but has many python dependencies once you start with complex operations
>> Simple architecture: all you need is an Ansible workstation and SSH servers. No agents and no server, but you have Python dependencies on client machines.
>> Web user interface available, but with limited features since it’s developed separately from the main project.
>> Scripts and modules can be built in any language, a limited library is provided
>> No Windows support
>> Easiest syntax and lowest learning curve
>> Ansible can use Paramiko, a Python SSH2 implementation, or standard SSH for communications, but there’s also an accelerate mode that allows for faster and larger-scale communication.
>> Ansible has a collection of modules that can be used to manage various systems as well as cloud infrastructure such as Amazon EC2 and OpenStack.
Puppet or Chef or Ansible???
>> Puppet and Chef help developers and development oriented organization, where Ansible is much more flexible to the needs of system administrators.
>> Ansible’s simple interface and usability fit right into the system admin psychology, and in an organization with lots of Linux and Unix systems, Ansible is quick and easy to run comparatively.
>> Puppet is the most mature and convenient of the three from a usability point of view, however a solid knowledge of Ruby is highly recommended.
>> Puppet is not as streamlined as Ansible, and its configuration can get complex at times. It is the safest way for miscellaneous environments, but you may find Ansible to be a better fit in a larger or more similar infrastructure.
>> Chef has a very stable and well-designed layout, and while it’s not quite up to the level of Puppet in terms of raw features, it’s a very capable solution. Chef may pose the most difficult learning curve to administrators who lack significant programming experience, but it could be the most logical fit for development-minded person and development organization.
If you look at each of these three tools in depth, explored their design and function, and determined that, while some scored higher than others, there’s a place for each to fit in, depending on the goals of the deployment. Here we don’t have a universal preference of one over the other. Each one is a good fit in certain circumstances.