terraform
ARM and terraform - Side by Side
Terraform
JSON w/ comments
HCL
Variables
Local variables
Resources
Resources
Modules
Explicit
Automatic
Refer by reference or resourceId
Refer by resource or data source
Providers
Azure (i.e. Azure Resource Manager)
the 'old' AzureServiceManagement (ASM) providerAzure Active Directory (AAD)
Azure Stack (on-premises)
Authentication
https://www.terraform.io/docs/providers/azurerm/index.html#authenticating-to-azure
AZ CLI - if environment has
azCLI installed, re-use existing sessionAzure Managed Identity (on Azure compute resource)
Azure Service Principals (with client secrets or X.509 certs)
The "azurerm" Provider (Azure Resource Manager)
"azurerm" Provider (Azure Resource Manager)https://www.terraform.io/docs/providers/azurerm/
http://aka.ms/terraform
The "azure_ad" Provider (Azure Resource Manager)
"azure_ad" Provider (Azure Resource Manager)https://www.terraform.io/docs/providers/azuread/index.html
Azure-specific environment variables
ARM_ENVIRONMENT-public,usgovernment,german,chinaARM_SUBSCRIPTION_ID- Azure subscription IDARM_TENANT_ID- Azure AD tenant ID for service principalARM_USE_MSI- Use Managed Service IdentityARM_CLIENT_ID- Service principal IDARM_CLIENT_SECRET- Service principal secret
Remote state: the "azurerm" backend
"azurerm" backendStores state in a blob, in a container, in an Azure storage account.
Authenticating to remote state backend
Inherit authN info from outer environment, such as
azCLI or service principaluse_msi: Managed identity within Azure Computeaccess_key: The storage account's access keysas_token: A 'shared access signature' token
Alternatively, Azure CosmosDB provides an etcd protocol head.
Data Sources
Many data sources, including
azurerm"azurerm_subscriptions": information about all the Subscriptions currently available"azurerm_subscription": information about an existing Subscription.KeyVault, Networking, API Management, Compute, ...
azureadUsers, Groups, Roles, ...
Azure Modules in the Terraform Registry
http://aka.ms/tfmodules

ARM / Terraform Interoperability
"azurerm_template_deployment": use ARM templates within Terraform
"azurerm_template_deployment": use ARM templates within TerraformExample: https://github.com/chgeuer/azure-snippets/blob/master/logic-app-reading-xml/terraform/modules/logicapp/main.tf
Terraform Resource Provider (RP) in Azure ARM
Private preview supporting three providers: Kubernetes, Cloudflare and Datadog
https://azure.microsoft.com/en-us/blog/introducing-the-azure-terraform-resource-provider/
Available environments
TF installed in the Azure Cloud Shell shell.azure.com

Learning resources for terraform on Azure
Last updated