Id | Description | Build Status |
---|---|---|
Application Gateway | Tutoriel on medium.com on how to build an Azure Application Gateway | N/A |
Best-Practice | Share a list of best practices and tutoriels when using Terraform on Azure | |
Azure DevOps - Intro | Share articles about CI/CD, Azure DevOps and Terraform on Azure. | |
CreateAzureRm-Infra | Share Terraform script that reveal how to create a VPC in Azure and how application client can create their resources |
Simple and Powerful
HashiCorp Terraform enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared among team members, treated as code, edited, reviewed, and versioned.
The following table is a quick comparison feedback between Terraform and Azure ARM template.
Comparison | Terraform | ARM Template |
---|---|---|
Pro | Common language to deal with several providers (Azure including AzureRm and Azure AD, AWS, Nutanix, VMware, Docker,...) Detect if a resource's parameter could be updated in place or if the resources need to be re created Compliant test could be done easily to ensure that what you have deployed remains coherent Facilitating CICD testing as the "plan" function tells you exactly what need to be done If the Terraform resource doesn't exist we can execute ARM template from the Terraform resource "azurerm_template_deployment" |
Microsoft Azure ownership Detect if a resource's parameter could be updated in place or if the resources need to be re created through the What-if feature Compliant test could be done easily to ensure that what you have deployed remains coherent through the What-if feature Facilitating CICD testing as the the What-if feature tells you exactly what need to be done If the ARM template could not be used, we can launch a Deployment Scripts from an ARM template Variety of parameters types Deployment log stored in the Azure Resource Group |
Cons | Could not use secure object as parameter New release might not be delivered as fast if it was the provider own tool |
AzureRm only, we can mitigate this cons using Deployment Scripts The deployment mode "complete" permits to guarantee that your RG contains exactly what you want but the ARM template could be hard to read depending on the number of resources you put on it |
About the Terraform's modules
On of the objective here is to share Terraform custom modules with the community with the following guidelines :
- a module is used when we need to call a given number of resources several times and the same way, for exemple : when creating a VM we need nic, disks, backup, log monitoring, etc ..
- a module doesn't contain any static values
- a module is called using variables