Skip to content

terraform plan

terraform plan #9

name: Terraform Apply
on:
push:
branches:
- master
- main
- develop
pull_request:
branches:
- master
- main
- develop
workflow_dispatch:
# schedule:
# - cron: '0 0 * * 0'
jobs:
terraform-plan:
name: Terraform Plan
runs-on: ${{ matrix.environment }}
strategy:
matrix:
environment:
- ubuntu-latest
env:
DOTNET_NOLOGO: 1
DOTNET_CLI_TELEMETRY_OPTOUT: 1
ACTIONS_RUNNER_DEBUG: true
TF_LOG: INFO
ARM_CLIENT_ID: ${{ secrets.TF_ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.TF_ARM_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.TF_ARM_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.TF_ARM_TENANT_ID }}
WORKING_DIR: "./"
STATE_FILE_NAME: "github.actions.tfstate"
steps:
- name: Fetch Sources
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: latest
- name: Terraform Version
run: terraform -v
working-directory: ${{ env.WORKING_DIR }}
- name: Terraform Validate
run: |
terraform init -backend=false
terraform validate
terraform fmt -check
working-directory: ${{ env.WORKING_DIR }}
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }} # keeps whole service principal json object
- name: Generate SAS Token
id: GenerateSASToken
shell: pwsh
run: |
$Date = (Get-Date).AddDays(1).ToString('yyyy-MM-dd')
$key = $( az storage account keys list --resource-group ${{ env.rgName }} --account-name ${{ env.storageAccount }} --query [0].value -o tsv )
$sas = $( az storage container generate-sas --name ${{ env.container }} --expiry $Date --permissions "racwdli" --account-name ${{ env.storageAccount }} --account-key "$key" )
$sas = $sas.Replace("`"","")
echo "sas_token=$sas" >> $env:GITHUB_OUTPUT
env:
rgName: 'rg-tf-state102-uat02'
storageAccount: 'sttfstate259'
container: 'contstate'
- name: Terraform Init
shell: bash
run: |
terraform init \
-backend-config="storage_account_name=${{ env.storageAccount }}" \
-backend-config="container_name=${{ env.container }}" \
-backend-config="key=${{ env.STATE_FILE_NAME }}" \
-backend-config="sas_token=${{ env.sas_token }}"
env:
rgName: 'rg-tf-state102-uat02'
storageAccount: 'sttfstate259'
container: 'contstate'
sas_token: ${{ steps.GenerateSASToken.outputs.sas_token }}
- name: Terraform Plan
shell: bash
run: terraform plan -var "prefix=${{ env.prefix }}" out ${{ env.STATE_FILE_NAME }}
env:
prefix: 'gha01'
outputs:
sas_token: ${{ steps.GenerateSASToken.outputs.sas_token }}