Comparison of Infrastructure as Code tools
Source - Multiple articles by Yevgeniy Brikman & other online articles:
The goal of DevOps is to make software delivery vastly more efficient.
Instead of constant outages and downtime, you build resilient, self-healing systems, and use monitoring and alerting to catch problems that can’t be resolved automatically.
There are four core values in the DevOps movement: Culture, Automation, Measurement, and Sharing (sometimes abbreviated as the acronym CAMS)
The idea behind infrastructure as code (IAC) is that you write and execute code to define, deploy, and update your infrastructure.
There are four broad categories of IAC tools:
- Ad hoc scripts
- Configuration management tools
- Server templating tools
- Server provisioning tools
Chef, Puppet, Ansible, and SaltStack are all configuration management tools, which means they are designed to install and manage software on existing servers.
Code that works correctly no matter how many times you run it is called idempotent code.
An alternative to configuration management that has been growing in popularity recently are server templating tools such as Docker, Packer, and Vagrant.
A server templating tool like Packer can be used to create a self-contained image of a server. You can then use other tools, such as Ansible, to install that image across all of your servers.
A virtual machine (VM) emulates an entire computer system, including the hardware. You run a hypervisor, such as VMWare, VirtualBox, or Parallels, to virtualize (i.e., simulate) the underlying CPU, memory, hard drive, and networking.
A container emulates the user space of an operating system. All the containers running on a single server share that server’s operating system kernel and hardware, so the isolation is not as secure as with VMs.
VMs virtualize the hardware, whereas containers only virtualize user space.
Server templating is a key component of the shift to immutable infrastructure. The idea behind immutable infrastructure is that once you’ve deployed a server, you never make changes to it again. If you need to update something (e.g., deploy a new version of your code), you create a new image from your server template and you deploy it on a new server.
Server provisioning tools such as Terraform, CloudFormation, and OpenStack Heat are responsible for creating the servers themselves.
Source | Cloud | Type | Infrastructure | Language | Agent | Master | Community | Maturity | Initial Release | |
---|---|---|---|---|---|---|---|---|---|---|
Chef | Open | All | Config Mgmt | Mutable | Procedural | Yes | Yes | Large | High | 2005 |
Puppet | Open | All | Config Mgmt | Mutable | Declarative | Yes | Yes | Large | High | 2009 |
Ansible | Open | All | Config Mgmt | Mutable | Procedural | No | No | Large | Medium | 2011 |
SaltStack | Open | All | Config Mgmt | Mutable | Declarative | Yes | Yes | Medium | Medium | 2011 |
CloudFormation | Closed | AWS | Provisioning | Immutable | Declarative | No | No | Small | Medium | 2012 |
Heat | Open | All | Provisioning | Immutable | Declarative | No | No | Small | Low | 2012 |
Terraform | Open | All | Provisioning | Immutable | Declarative | No | No | Medium | Low | 2014 |
Deployment Manager | GCP | Config Mgmt | Declarative | 2015 | ||||||
Pulumi | Open | All | Provisioning | Immutable | Declarative | 2017 |
The goal of DevOps is to make software delivery vastly more efficient.
Instead of constant outages and downtime, you build resilient, self-healing systems, and use monitoring and alerting to catch problems that can’t be resolved automatically.
There are four core values in the DevOps movement: Culture, Automation, Measurement, and Sharing (sometimes abbreviated as the acronym CAMS)
The idea behind infrastructure as code (IAC) is that you write and execute code to define, deploy, and update your infrastructure.
There are four broad categories of IAC tools:
- Ad hoc scripts
- Configuration management tools
- Server templating tools
- Server provisioning tools
Chef, Puppet, Ansible, and SaltStack are all configuration management tools, which means they are designed to install and manage software on existing servers.
Code that works correctly no matter how many times you run it is called idempotent code.
An alternative to configuration management that has been growing in popularity recently are server templating tools such as Docker, Packer, and Vagrant.
A server templating tool like Packer can be used to create a self-contained image of a server. You can then use other tools, such as Ansible, to install that image across all of your servers.
A virtual machine (VM) emulates an entire computer system, including the hardware. You run a hypervisor, such as VMWare, VirtualBox, or Parallels, to virtualize (i.e., simulate) the underlying CPU, memory, hard drive, and networking.
A container emulates the user space of an operating system. All the containers running on a single server share that server’s operating system kernel and hardware, so the isolation is not as secure as with VMs.
VMs virtualize the hardware, whereas containers only virtualize user space.
Server templating is a key component of the shift to immutable infrastructure. The idea behind immutable infrastructure is that once you’ve deployed a server, you never make changes to it again. If you need to update something (e.g., deploy a new version of your code), you create a new image from your server template and you deploy it on a new server.
Server provisioning tools such as Terraform, CloudFormation, and OpenStack Heat are responsible for creating the servers themselves.
A declarative style is great when you need to update your infrastructure or make any changes to it. Whereas the imperative is good for a deploy and forget model, but that isn’t always great if you’re looking to be an agile organization or have a changing infrastructure.
Terraform is a binary that translates the contents of your configurations into API calls to cloud providers
Terraform is a binary that translates the contents of your configurations into API calls to cloud providers
GCP Deployment Manager is a hosted service that allows you to integrate with other GCP services such as Identity Access Management like Cloud Formation from AWS which is only structured to work within AWS infrastructure, and it integrates well with AWS services.
Terraform is the swiss army knife of IaC tools. It is not only idempotent, Terraform is completely cloud-agnostic and helps you tackle large infrastructure for complex distributed applications.
Ansible provides a “radically simple” IT automation engine. It is designed for multi-tier deployments and uses no agents. Ansible is a strong fit for configuration management, application deployment, and intra-service orchestration by describing how all the systems inter-relate.
Also see -
Comments
Post a Comment