Skip to content

Terraform Plan and Apply with Approval #29

Terraform Plan and Apply with Approval

Terraform Plan and Apply with Approval #29

Workflow file for this run

name: Terraform Plan and Apply with Approval
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment environment'
required: true
default: 'qa'
type: choice
options:
- dev
- qa
pipeline_action:
description: 'Pipeline action (create or destroy)'
required: true
default: 'create'
type: choice
options:
- create
- destroy
jobs:
terraform:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
- name: Terraform Init
env:
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
TF_WORKSPACE: ${{ inputs.environment }}
run: terraform init -backend-config=azurerm.tfbackend -upgrade
- name: Terraform workspace
env:
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
run: terraform workspace select ${{ inputs.environment }}
- name: Terraform Plan
env:
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
run: terraform plan -out=tfplan -var-file="./env/${{ inputs.environment }}.tfvars"
- name: Terraform Apply
env:
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
if: github.event.inputs.pipeline_action == 'create'
run: terraform apply -auto-approve -var-file="./env/${{ inputs.environment }}.tfvars"
- name: Terraform Destroy
env:
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
if: github.event.inputs.pipeline_action == 'destroy'
run: terraform destroy -auto-approve -var-file="./env/${{ inputs.environment }}.tfvars"