alz/azuredevops/pipelines/terraform/templates/helpers/terraform-init.yaml (45 lines of code) (raw):
---
parameters:
- name: serviceConnection
- name: backendAzureResourceGroupName
- name: backendAzureStorageAccountName
- name: backendAzureStorageAccountContainerName
- name: backendAzureStorageAccountContainerKeyName
default: terraform.tfstate
- name: root_module_folder_relative_path
default: '.'
steps:
- task: AzureCLI@2
displayName: 'Terraform Init'
inputs:
azureSubscription: $${{ parameters.serviceConnection }}
scriptType: pscore
scriptLocation: inlineScript
addSpnToEnvironment: true
inlineScript: |
# Get settings from service connection
az account show 2>$null | ConvertFrom-Json | Set-Variable account
$clientId = $account.user.name
$oidcToken = $env:idToken # requires addSpnToEnvironment: true
$subscriptionId = $account.id
$tenantId = $account.tenantId
$env:ARM_TENANT_ID = $tenantId
$env:ARM_SUBSCRIPTION_ID = $subscriptionId
$env:ARM_OIDC_TOKEN = $oidcToken
$env:ARM_USE_OIDC = "true"
$env:ARM_CLIENT_ID = $clientId
$env:ARM_USE_AZUREAD = "true"
$arguments = @()
$arguments += "-chdir=$${{ parameters.root_module_folder_relative_path }}"
$arguments += "init"
$arguments += "-backend-config=storage_account_name=$($env:BACKEND_AZURE_STORAGE_ACCOUNT_NAME)"
$arguments += "-backend-config=container_name=$($env:BACKEND_AZURE_STORAGE_ACCOUNT_CONTAINER_NAME)"
$arguments += "-backend-config=key=$($env:BACKEND_AZURE_STORAGE_ACCOUNT_CONTAINER_KEY_NAME)"
$arguments += "-backend-config=resource_group_name=$($env:BACKEND_AZURE_RESOURCE_GROUP_NAME)"
# Run terraform init
$command = "terraform"
Write-Host "Running: $command $arguments"
& $command $arguments
env:
BACKEND_AZURE_RESOURCE_GROUP_NAME: $${{ parameters.backendAzureResourceGroupName }}
BACKEND_AZURE_STORAGE_ACCOUNT_NAME: $${{ parameters.backendAzureStorageAccountName }}
BACKEND_AZURE_STORAGE_ACCOUNT_CONTAINER_NAME: $${{ parameters.backendAzureStorageAccountContainerName }}
BACKEND_AZURE_STORAGE_ACCOUNT_CONTAINER_KEY_NAME: $${{ parameters.backendAzureStorageAccountContainerKeyName }}