Ever heard of infrastructure-as-code? The idea is basically to use tools like Terraform and Ansible to manage the composition and operation of your cloud systems. This allows infrastructure to be treated just like any other software system. The code can be committed into Git which allows auditability, and reproducibility. It can therefore be tested and integrated into full continuous delivery processes.
Terraform for infrastructure
Terraform makes it easy to provision and manage any cloud, infrastructure, or service (such as VMs, load balancers or object storage) with easy-to-read declarative configuration files. Entire infrastructures are fully reproducible, and can be set up or torn down with single commands.
It's also very easy to mix and match cloud IaaS providers such as AWS, Azure, GCP, or those running OpenStack.
Ansible for configuration
Ansible provides tonnes of modules, including those for files, storage, system, networking and even cloud (just like Terraform), called as "tasks" that can be run sequentially (procedural) in "roles" and "playbooks", to do things like installing Web and DB servers (and installing Drupal). Ansible strives for simplicity, resulting in playbooks that are essentially self-documenting.
In this session, we will:
- Explore the principles of infrastructure-as-code and how to operationalize them;
- Introduce Terraform and its providers, resources and backends;
- Introduce Ansible and its tasks, modules and roles;
- Build a full OpenStack cloud infrastructure end-to-end from scratch, including a fully functional up-and-running Aegir installation (for hosting Drupal sites) running on a newly created VM, with a single command.