Skip to content

Commit

Permalink
terraform destroy
Browse files Browse the repository at this point in the history
  • Loading branch information
kolosovpetro committed Aug 30, 2023
1 parent bb37881 commit d3fed8c
Show file tree
Hide file tree
Showing 2 changed files with 141 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ variables:
value: INFO
- name: workingDir
value: '$(System.DefaultWorkingDirectory)'
- group: 'TF_SETTINGS_APPLY' # update to your variable group name
- group: 'TF_SETTINGS' # update to your variable group name

stages:
- stage: "Terraform_Plan"
Expand Down
140 changes: 140 additions & 0 deletions azure-pipelines/azdo-terraform-destroy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
#trigger:
# batch: true
# branches:
# include:
# - master
#
#pr:
# branches:
# include:
# - '*'

trigger: none
pr: none

variables:
- name: TF_LOG
value: INFO
- name: workingDir
value: '$(System.DefaultWorkingDirectory)'
- group: 'TF_SETTINGS' # update to your variable group name

stages:
- stage: "Terraform_Plan"
displayName: "Terraform_Plan"
jobs:
- job: 'Terraform_Plan'
displayName: "Terraform_Plan"
pool:
vmImage: "ubuntu-latest"
steps:
- checkout: self
fetchDepth: 0

- script: |
terraform init -backend=false
terraform validate
terraform fmt -check
displayName: "Run tf validate"
workingDirectory: '$(workingDir)'
- task: AzureCLI@2
name: SasTokenStep
displayName: 'Set SAS Token'
inputs:
azureSubscription: 'TerraformTemplateServiceConnection' # update to your service connection name
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
$Date = (Get-Date).AddDays(1).ToString('yyyy-MM-dd')
$key = $( az storage account keys list --resource-group $(rgName) --account-name $(storageAccount) --query [0].value -o tsv )
$sas = $( az storage container generate-sas --name $(container) --expiry $Date --permissions "racwdli" --account-name $(storageAccount) --account-key "$key" )
$sas = $sas.Replace("`"","")
Write-Host "##vso[task.setvariable variable=SAS_TOKEN;isOutput=true]$sas"
- bash: |
terraform init \
-backend-config="storage_account_name=$TF_STATE_BLOB_ACCOUNT_NAME" \
-backend-config="container_name=$TF_STATE_BLOB_CONTAINER_NAME" \
-backend-config="key=$TF_STATE_BLOB_FILE" \
-backend-config="sas_token=$TF_STATE_BLOB_SAS_TOKEN"
displayName: Terraform Init
workingDirectory: $(workingDir)
env:
TF_STATE_BLOB_ACCOUNT_NAME: $(storageAccount)
TF_STATE_BLOB_CONTAINER_NAME: $(container)
TF_STATE_BLOB_FILE: $(stateFile)
TF_STATE_BLOB_SAS_TOKEN: $(SasTokenStep.SAS_TOKEN)
- bash: |
terraform plan -destroy -var "prefix=$PREFIX" -out main.tfplan
workingDirectory: $(workingDir)
displayName: 'Terraform Plan'
env:
PREFIX: $(prefix)
ARM_SUBSCRIPTION_ID: $(subscriptionId)
ARM_CLIENT_ID: $(clientId)
ARM_CLIENT_SECRET: $(clientSecret)
ARM_TENANT_ID: $(tenantId)
- bash: cp main.tfplan $(Build.ArtifactStagingDirectory)
displayName: 'Copy Plan'
workingDirectory: $(workingDir)

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifacts'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'

- stage: 'Terraform_Destroy'
displayName: 'Terraform_Destroy'
dependsOn: 'Terraform_Plan'
condition: succeeded('Terraform_Plan')
jobs:
- deployment: 'Terraform_Destroy'
displayName: 'Terraform_Destroy'
pool:
vmImage: 'ubuntu-latest'
environment: 'terraform' # update to your environment name
variables:
SasToken: $[ stageDependencies.Terraform_Plan.Terraform_Plan.outputs['SasTokenStep.SAS_TOKEN'] ]
strategy:
runOnce:
deploy:
steps:
- checkout: self
fetchDepth: 0

- download: current
artifact: drop

- bash: |
terraform init \
-backend-config="storage_account_name=$TF_STATE_BLOB_ACCOUNT_NAME" \
-backend-config="container_name=$TF_STATE_BLOB_CONTAINER_NAME" \
-backend-config="key=$TF_STATE_BLOB_FILE" \
-backend-config="sas_token=$TF_STATE_BLOB_SAS_TOKEN"
displayName: 'Terraform Init'
workingDirectory: $(workingDir)
env:
TF_STATE_BLOB_ACCOUNT_NAME: $(storageAccount)
TF_STATE_BLOB_CONTAINER_NAME: $(container)
TF_STATE_BLOB_FILE: $(stateFile)
TF_STATE_BLOB_SAS_TOKEN: $(SasToken)
- bash: |
cp $(Agent.BuildDirectory)/drop/main.tfplan main.tfplan
displayName: 'Copy Plan'
workingDirectory: $(workingDir)
- bash: |
terraform apply -auto-approve main.tfplan
displayName: 'Terraform Destroy'
workingDirectory: $(workingDir)
env:
ARM_SUBSCRIPTION_ID: $(subscriptionId)
ARM_CLIENT_ID: $(clientId)
ARM_CLIENT_SECRET: $(clientSecret)
ARM_TENANT_ID: $(tenantId)

0 comments on commit d3fed8c

Please sign in to comment.