Infrastructure as code is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools.
Packer is a free and open source tool for creating golden images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration management like Chef or Puppet. In fact, when building images, Packer is able to use tools like Chef or Puppet to install software onto the image.
A machine image is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines. Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc.
- The Packer Book - James Turnbull
- Documentation
- Using Packer and Ansible to Build Immutable Infrastructure
- Packer – automating virtual machine image creation
- Automated Image Builds with Jenkins, Packer, and Kubernetes
Terraform enables you to safely and predictably create, change, and improve production infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.
Configuration files describe to Terraform the components needed to run a single application or your entire datacenter. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure. As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied.
The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc.
- Terraform: Up & Running
- Documentation
- Terraform for Bare Metal with Matchbox
- Terraform Version Manager
- Terraform Gotchas And How We Work Around Them
- Using Terraform to manage Google Cloud Platform infrastructure as code
- Why we use Terraform and not Chef, Puppet, Ansible, SaltStack, or CloudFormation
- Terraform in Google Compute Made Easy
- Provision a Cluster on Google Cloud with Terraform
Ansible is an open-source automation engine that automates software provisioning, configuration management, and application deployment.
- Ansible Up & Running
- Ansible for DevOps
- Documentation
- Automation with Ansible
- Writing Ansible Modules, Complete with Tests
- 19 Minutes with Ansible - Part 1/4
- Learning Ansible with Vagrant - Part 2/4
- Configuration Management with Ansible - Part 3/4
- Zero-downtime Deployments with Ansible - Part 4/4
- Ansible vs Salt vs StackStorm
Chef is an automation platform for DevOps.
- Learning Chef - A Guide to Configuration Management & Automation
- Documentation
- Supermarket - Cookbook Search
- Learn Chef - Tutorials
StackStorm is event-driven automation commonly used for auto-remediation, security responses, facilitated troubleshooting, complex deployments, and more. Includes rules engine, workflow, 1800+ integrations (see /st2contrib), native ChatOps and so forth.
When failures happen, StackStorm can act as Tier 1 support: It troubleshoots, fixes known problems, and escalates to humans when needed. Be it a silly yet common “when disk is out of space, clean up the logs”, recovering RabbitMQ split-brain, migrating MySQL master, or automating troubleshooting guides for OpenStack or Cassandra… the learning from Facebook, LinkedIn and others is: if you don’t automate, you die.