alz/azuredevops/pipelines/terraform/templates/helpers/terraform-apply.yaml (36 lines of code) (raw):

--- parameters: - name: terraform_action default: 'apply' - name: serviceConnection - name: root_module_folder_relative_path default: '.' steps: - task: AzureCLI@2 displayName: Terraform Apply for $${{ coalesce(parameters.terraform_action, 'Apply') }} 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 = $account.tenantId $env:ARM_SUBSCRIPTION_ID = $account.id $env:ARM_OIDC_TOKEN = $oidcToken $env:ARM_USE_OIDC = "true" $env:ARM_CLIENT_ID = $clientId $env:ARM_USE_AZUREAD = "true" $env:AZAPI_RETRY_GET_AFTER_PUT_MAX_TIME = "60m" # Accounts for eventually consistent management group permissions propagation # Run Terraform Apply $command = "terraform" $arguments = @() $arguments += "-chdir=$${{ parameters.root_module_folder_relative_path }}" $arguments += "apply" $arguments += "-auto-approve" $arguments += "tfplan" Write-Host "Running: $command $arguments" & $command $arguments