|
29 | 29 | persist-credentials: false
|
30 | 30 |
|
31 | 31 | - name: Checkout terraform data to a subdirectory
|
| 32 | + working-directory: infra/terraform |
32 | 33 | run: |
|
33 | 34 | git fetch --depth=1 origin generated-terraform
|
34 | 35 | git worktree add terraform-data generated-terraform
|
@@ -56,20 +57,52 @@ jobs:
|
56 | 57 | tfenv install
|
57 | 58 | tfenv use
|
58 | 59 |
|
| 60 | + - name: Install ansible-vault |
| 61 | + # The command pip3 install --user ansible==2.10.17 doesn't work as we have an old version |
| 62 | + # See https://docs.ansible.com/ansible/2.10/installation_guide/intro_installation.html#installing-devel-from-github-with-pip |
| 63 | + run: python3 -m pip install --user https://github.com/ansible/ansible/archive/refs/tags/v2.10.17.tar.gz |
| 64 | + |
59 | 65 | - name: Show tools versions
|
60 | 66 | run: |
|
61 | 67 | tfenv --version
|
62 | 68 | terraform -version
|
| 69 | + ansible-vault --version |
| 70 | +
|
| 71 | + - name: Decrypt terraform files |
| 72 | + working-directory: infra/terraform |
| 73 | + env: |
| 74 | + # https://docs.github.com/en/actions/security-guides/encrypted-secrets#using-encrypted-secrets-in-a-workflow |
| 75 | + VAULT_PASSWORD: ${{ secrets.VAULT_PASSWORD }} |
| 76 | + run | |
| 77 | + echo -n "$VAULT_PASSWORD" >vault-pass.txt |
| 78 | + |
| 79 | + for FILENAME in terraform.tfstate terraform.tfvars; do |
| 80 | + echo "Decrypting ${FILENAME}.enc to $FILENAME" |
| 81 | + ansible-vault decrypt \ |
| 82 | + --vault-password-file vault-pass.txt \ |
| 83 | + --output "terraform-data/$FILENAME" \ |
| 84 | + "terraform-data/${FILENAME}.enc" |
| 85 | + done |
63 | 86 |
|
64 | 87 | - name: Run terraform init
|
65 | 88 | working-directory: infra/terraform
|
66 | 89 | run: terraform init
|
67 | 90 |
|
68 | 91 | - name: Run terraform plan
|
69 | 92 | working-directory: infra/terraform
|
70 |
| - run: terraform plan -detailed-exitcode |
| 93 | + run: >- |
| 94 | + terraform plan \ |
| 95 | + -detailed-exitcode \ |
| 96 | + -var-file terraform-data/terraform.tfvars \ |
| 97 | + -state terraform-data/terraform.tfstate \ |
| 98 | + -out terraform.tfplan |
| 99 | +
|
71 | 100 |
|
72 | 101 | - name: Cleanup
|
73 | 102 | if: always()
|
| 103 | + working-directory: infra/terraform |
74 | 104 | run: |
|
| 105 | + for FILENAME in vault-pass.txt terraform.tfplan terraform-data/terraform.tfstate terraform-data/terraform.tfvars; do |
| 106 | + [ ! -f "$FILE" ] || rm -fv "$FILE" |
| 107 | + done |
75 | 108 | [ ! -d terraform-data ] || git worktree remove terraform-data
|
0 commit comments