The move from the Physical Server era to the Virtualization and Cloud era meant that we now can treat infrastructure as software and services. Infrastructure automation refers to exactly that: Treating infrastructure as code. This means your infrastructure and its configuration run as scripts, or sets of various code bases and API’s, that replicate the environment in a much faster manner, resulting in less errors.
By automating how you build, deploy and manage your cloud infrastructure, you’ll end up with a testable, repeatable, and transparent infrastructure allowing you to standardize operations, reduce errors and iterate faster.
There are several deployment management and configuration management tools that are designed to simplify automation and enable consistent deployment across your environments. Below, we’ve listed the most popular tools along with their pros and cons.
Based in Ruby, Chef is a popular open source tool for configuration management. Running on a master-client model, Chef has a separate workstation required to control the master. Chef is transparent in its design and works well for development-focused teams. Familiarity with Git is necessary.
Puppet, being one of the oldest tools in this space, is an open source tool based in Ruby that uses a customized Domain Scripting Language (DSL). Using a model-driven approach, Puppet runs on master-client setup with a code design that works as a list of dependencies. Often used by large enterprises, Puppet works well in diverse environments and offers stability and maturity.
Ansible is a free open source tool using a push model setup to deploy applications. Ansible’s playbooks are well-structured and its focus lies on streamlining deployments. With Ansible you can get up and running quickly and easily.
SaltStack (or Salt) is an open source tool that also offers an enterprise version. Salt is CLI-based and can be set up as a master-client model or a non-centralized model, offering a push method and an SSH method of communication. Based in Python, Salt is known for its scalability and usability.