Automating Application and Infrastructure Delivery Using Immutability and Continuous Deployment

Solution Overview

To simplify and fully utilize the capabilities of the cloud, you need tools that allow you to scale infrastructure and deploy applications through automation. What's also needed is a pivot to application and infrastructure as code and adopting the Immutable Infrastructure paradigm. 

In the Immutable Infrastructure paradigm when a resource is deployed it cannot be updated externally. If an update is required, a new resource is created to replace the existing one. This series of labs introduces the Immutable Infrastructure paradigm to build and deploy software in a public cloud environment. Each module involves using tools common in the Immutable Infrastructure space, such as machine images as code, configuration management and infrastructure as code.

Benefits and uses cases of Immutable Infrastructure include:

  • Elimination of configuration drift.
  • Defining images using code.
  • Easy software rollbacks in case of failure.
  • Zero downtime upgrades.
  • Predictable environments.

Goals & Objectives

  • Understand the immutable infrastructure paradigm.
  • Create a custom operating system image and deploy it in a public cloud environment.
  • Implement a GitOps workflow with common tooling in that space: HashiCorp Packer, Red Hat Ansible Automation, HashiCorp Terraform, GitLab (CI) and Microsoft Azure.

Hardware & Software

  • CentOS Linux
  • HashiCorp Packer
  • Red Hat Ansible
  • HashiCorp Terraform
  • GitLab CI
  • Microsoft Azure