Wednesday, 25 May 2016

Definitions of Chef, Puppet, Vagrant, and Docker

In my pursuit to help people about DevOps terminologies here are the definitions of Chef, Puppet, Vagrant, and Docker. There are so many others out there. This is my attempt.

Chef: Chef is an automation platform to transform your infrastructure into code. It is also called, Configuration Management Software. You can define the state with different parameters as your config files, s/w, tools, access types and resource types, etc. Also, you can configure different machines with different functionality based on your need.

Puppet: Puppet is a tool that allows you to abstract specific concepts of the target machine and make the configuration process more operating system agnostic. It allows to install a package or run a background service on startup independently. Define a command, packages those need to installed, step dependencies, file content, and other things you would need to get machine up and running without problems.

Vagrant: Vagrant is a project that helps the spawning of virtual machines. It started as a command line of VirtualBox, something similar to Gemfile for VM's. You can choose the base image to start with, network, IP, share folders and put it all in a file that anyone can reuse to spawn the same configured machine. Vagrant has different extensions, provisioning options and VM providers. You can run a VirtualBox, VMware and it is extensible enough to be able to create instances on EC2.

Docker: Docker, allows to package an application with all of its dependencies into a standardized unit of software development. So, it reduces the friction between developer, QA and testing. It dynamically changes your application, adding new capabilities every single day, scaling out services to quickly changing the problem areas. Docker is putting itself in an excited place as the interface to PaaS be it networking, discovery and service discovery with applications not having to care about underlying infrastructure.

3 comments: