Ansible is an open-source software provisioning, configuration management, and application-deployment tool. It runs on many Unix-like systems, and can configure both Unix-like systems as well as Microsoft Windows. It includes its own declarative language to describe system configuration.

This space is not meant to give a full explanation of Ansible's features but instead act as a supplemental resource to get started with how we use Ansible at Insight. For an introductory tutorial, please read Tutorials Point's Ansible introduction or read the official docs.

Ansible Components

Ansible Tutorial - WIP

Ansible Resources

Ansible at Insight


Where we use Ansible:

We use Ansible to configure all of our machines in one of two places.

  1. During the AMI baking step with Packer where we bootstrap an image and run an Ansible configuration step
  2. Post startup configuration where we run Ansible directly on the host

How we use Ansible:

Both places we use Ansible, we wrap it's call with terraform for two reasons.

  1. We want to be able to call Ansible in the proper order as prescribed by the graph we build in terraform
  2. We want to have access to variables from our terraform environment such as IP addresses / domains and other settings. If we did not wrap with terraform, we'd need another set of tooling (namely terraform-inventory) to extract these values and then other tooling to join the terraform variables with our own.

To accomplish this, we have built a number of repos.