atlantis.yaml (128 lines of code) (raw):

version: 3 automerge: true projects: - dir: terragrunt_way/applications/py_application workflow: terragrunt autoplan: when_modified: [ "../../../modules/**/*.tf", "../../common_vars.yml", "application_vars.yml", "terragrunt.hcl" ] enabled: false - dir: terragrunt_way/applications/go_application workflow: terragrunt autoplan: when_modified: [ "../../../modules/**/*.tf", "../../common_vars.yml", "application_vars.yml", "terragrunt.hcl" ] enabled: false - dir: terragrunt_way/applications/java_application workflow: terragrunt autoplan: when_modified: [ "../../../modules/**/*.tf", "../../common_vars.yml", "application_vars.yml", "terragrunt.hcl" ] enabled: false # https://www.runatlantis.io/docs/server-side-repo-config.html#allow-repos-to-define-their-own-workflows workflows: terragrunt: #================= Terragrunt Workflow =============================# plan: steps: - env: name: BASE_BRANCH_NAME value: main - env: name: DESTROY_PARAMETER command: if [ "$COMMENT_ARGS" = "\-\d\e\s\t\r\o\y" ]; then echo "-destroy"; else echo ""; fi - env: name: TF_VAR_auth_token command: 'aws ssm get-parameter --name "/vcs/user/token" --with-decryption | jq .Parameter.Value -r' - env: name: TF_VAR_sonarcloud_token command: 'aws ssm get-parameter --name "/sonar/token" --with-decryption | jq .Parameter.Value -r' - env: name: TF_VAR_teams_web_hook command: 'aws ssm get-parameter --name "/teams/web/hook" --with-decryption | jq .Parameter.Value -r' - env: name: TF_VAR_slack_web_hook command: 'aws ssm get-parameter --name "/slack/web/hook" --with-decryption | jq .Parameter.Value -r' - env: name: INFRACOST_API_KEY command: 'aws ssm get-parameter --name "/infracost/api/key" --with-decryption | jq .Parameter.Value -r' - env: name: INFRACOST value: 1 - env: # If you want to use tflint, set the value to 1, otherwise 0. name: TFLINT value: 0 - env: # If you want to use tfsec, set the value to 1, otherwise 0. name: TFSEC value: 0 - env: # If you want to use checkov, set the value to 1, otherwise 0. name: CHECKOV value: 0 - env: # If you want to use regula, set the value to 1, otherwise 0. name: REGULA value: 1 - run: atlantis version || true - run: terraform version || true - run: infracost --version - run: terragrunt validate - run: terragrunt plan -out $PLANFILE $DESTROY_PARAMETER - run: terragrunt show -json $PLANFILE > $SHOWFILE - run: if [ $TFLINT == 1 ]; then echo "------ tflint report ------" && tflint --module; echo "-------------------------------------"; fi - run: if [ $CHECKOV == 1 ]; then echo "------ Checkov Report ------" && checkov -d . --quiet; echo "-------------------------------------"; fi - run: if [ $TFSEC == 1 ]; then echo "------ TFSec Report ------" && tfsec --no-colour --soft-fail --concise-output --exclude AWS005 . ; echo "-------------------------------------"; fi - run: if [ $REGULA == 1 ]; then echo "------ Regula Report ------" && regula run -t tf-plan $SHOWFILE ; echo "-------------------------------------"; fi - run: if [ $INFRACOST == 1 ]; then echo "------ Infracost Report ------" && infracost breakdown --path $SHOWFILE ; echo "-------------------------------------"; fi apply: steps: - env: name: TF_VAR_auth_token command: 'aws ssm get-parameter --name "/vcs/user/token" --with-decryption | jq .Parameter.Value -r' - env: name: TF_VAR_sonarcloud_token command: 'aws ssm get-parameter --name "/sonar/token" --with-decryption | jq .Parameter.Value -r' - env: name: TF_VAR_teams_web_hook command: 'aws ssm get-parameter --name "/teams/web/hook" --with-decryption | jq .Parameter.Value -r' - env: name: TF_VAR_slack_web_hook command: 'aws ssm get-parameter --name "/slack/web/hook" --with-decryption | jq .Parameter.Value -r' - env: # If you want to use cloud custodian, set the value to 1, otherwise 0. name: CUSTODIAN value: 0 - env: # EPAM Custodian variables; set the value to 1 to use, otherwise 0. name: C7N_EPAM value: 0 - env: name: CUSTODIAN_ROLE value: 'aws ssm get-parameter --name "/custodian/role/arn" | jq .Parameter.Value -r' - env: name: C7N_PASSWORD command: 'aws ssm get-parameter --name "/C7N/PASSWORD" --with-decryption | jq .Parameter.Value -r' - env: name: C7N_API command: 'aws ssm get-parameter --name "/C7N/Api" --with-decryption | jq .Parameter.Value -r' - env: name: C7N_USER command: 'aws ssm get-parameter --name "/C7N/user" --with-decryption | jq .Parameter.Value -r' - env: name: ACCOUNT_NAME value: atlantis - run: terragrunt apply $PLANFILE - run: if [ $CUSTODIAN == 1 ]; then echo "------ Cloud Custodian Report ------" && custodian run --output-dir=. /home/atlantis/.atlantis/repos/${BASE_REPO_OWNER}/${BASE_REPO_NAME}/${PULL_NUM}/${WORKSPACE}/custodian.yml && echo "-------------------------------------"; fi - run: if [ $C7N_EPAM == 1 ]; then echo "------ EPAM Custodian Report ------" && timeout 600 /home/atlantis/.atlantis/repos/${BASE_REPO_OWNER}/${BASE_REPO_NAME}/${PULL_NUM}/${WORKSPACE}/custodian.sh && echo "-------------------------------------"; fi