Well-Architected Framework
Automate deployments
Automated deployments eliminate manual errors and provide predictable, repeatable processes for both applications and infrastructure. This involves using infrastructure as code to provision infrastructure and deploying applications to container orchestrators or virtual machines with immutable infrastructure patterns.
Automate infrastructure provisioning
Use Terraform to provision and manage your application infrastructure in a predictable, repeatable way. Terraform has over 4000 providers, letting you deploy to any cloud provider or platform that has an API.
HCP Terraform manages Terraform runs in a consistent and reliable environment, securely stores your state files, and enables team collaboration. Key features include:
- Connect to your VCS provider for infrastructure development workflows
- Store modules in a private registry for code reuse
- Run tasks to integrate third-party services during deployment
- Granular access controls for team permissions
- Policy enforcement for configuration guardrails
Automate application deployment
Your application deployment process depends on your packaging strategy. For virtual machines, package your application in the machine image itself rather than installing it after deployment. This immutable infrastructure approach ensures you know exactly what's running and simplifies scaling.
For containerized applications, use Terraform to manage deployments to container orchestrators like Kubernetes or Nomad. This provides a unified workflow for managing both application and infrastructure resources.
Kubernetes deployment
Kubernetes automates the deployment and scaling of containerized workloads. The Terraform Kubernetes provider lets you interact with the Kubernetes API to deploy and manage workloads. You can also deploy Helm packages with the Helm Terraform provider.
Nomad deployment
Nomad orchestrates and manages workloads including containers, standalone binaries, and batch jobs. Use the Terraform Nomad provider to manage workloads using infrastructure-as-code, or use Nomad Pack for templating and package management.
Next steps
In this section of Automate your workflows, you learned how to automate deployments for both infrastructure and applications. Automated deployments are part of the Define and automate processes pillar.
Visit the following documents to learn more about the automation workflow:
- Atomic deployments - Implement small, frequent infrastructure deployments
- Zero-downtime deployments - Implement zero-downtime deployment strategies