The move from the “Iron Age” to the “Cloud Era” meant that we now can treat infrastructure as software. Infrastructure Automation refers to exactly that: Treating infrastructure as code. This means your infrastructure and its configuration run as scripts, or sets of scripts, 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. Pros: Code-driven approach, large collection of modules Cons: High complexity, no support for push functionality
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. Pros: Simple installation, mature interface, strong support community Cons: Less control than code-driven approaches, requires CLI for advanced tasks
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. Pros: SSH-based, quick setup, structured playbook Cons: Inconsistent performance, poor introspection
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. Pros: Feature-rich DSL, good introspection, strong community Cons: Hard to set up, complex documentation, lacks support for non-Linux OSs