10 February 2022
As more and more companies adopt cloud-based solutions for their IT infrastructure, managing and deploying those resources can become increasingly complex. In response to this challenge, two tools are available to simplify the process of deploying and managing Azure resources: Terraform, Azure Resource Manager (ARM) Templates and its new offspring Bicep.
In this blog, I'll offer a few opinions why some choose Terraform and others ARM or Bicep for their Azure deployments.
Terraform
Terraform is an open-source infrastructure as code tool that allows you to define and provision infrastructure in a declarative manner. This means that you define the desired state of your infrastructure using a high-level language, and Terraform takes care of the rest by automatically provisioning and managing the resources to achieve that state.
There are several reasons why companies choose to use Terraform for their Azure deployments:
Cross-platform support: Terraform can be used to manage resources across a wide variety of platforms, including Azure, AWS, Google Cloud, and many more. This makes it an attractive option for companies that have a multi-cloud strategy or are considering migrating to a different cloud provider in the future.
Modular approach: Terraform uses a modular approach to infrastructure as code, which allows you to break down your infrastructure into smaller, more manageable components. This makes it easier to maintain and update your infrastructure over time.
Version control: Because Terraform uses code to define your infrastructure, it can be version-controlled just like any other codebase. This means you can roll back changes, collaborate with teammates, and track changes over time.
Automation: Terraform can be used to automate the deployment and management of your infrastructure, which can save time and reduce the risk of human error.
ARM Templates or Bicep
ARM) is Microsoft's solution for managing and deploying resources in Azure. Like Terraform, ARM uses a declarative language to define the desired state of your infrastructure.
There are several reasons why companies choose to use ARM for their Azure deployments:
Tight integration with Azure: Because ARM is a native Azure tool, it integrates seamlessly with other Azure services and tools. This makes it easy to deploy and manage resources in Azure.
Azure-specific features: ARM includes several features that are specific to Azure, such as Azure policies, which allow you to enforce compliance and governance across your Azure resources.
Simplified deployment: ARM templates can be used to simplify the deployment of complex environments by defining all the necessary resources in a single template.
Extensibility: ARM templates can be extended with custom scripts and modules, allowing you to customize your deployment to meet your specific needs.
What I have found is that those that are vocal about one or the other can be grouped into one of two camps, loosely based around their working background. The groups are those with a Linux background and those that have a predominately Microsoft background.
I often find that those that strongly favour one option over the other will overlook their shortcoming of their preferred tool. This can be said about any subject that divides opinion.
Question is, should you try to enlighten people with a different view or follow the crowd?
Comentarios