Delete Infrastructure #14
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Delete Infrastructure | |
on: | |
# push: | |
# branches: | |
# - main | |
workflow_dispatch: | |
inputs: | |
AWS_REGION: | |
description: 'AWS region in which the infrastructure to delete is deployed' | |
required: true | |
default: 'eu-west-3' | |
NAME_PREFIX: | |
description: 'Prefix name for resources to be delete: s3 bucket, vpc, eks, ec2, etc.' | |
required: true | |
default: 'eks' | |
jobs: | |
delete: | |
name: Delete AWS infrastructure (VPC, EKS, Node Group, ec2, etc.) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # pin@v2 | |
- name: Setup tool - install Terraform | |
uses: hashicorp/setup-terraform@633666f66e0061ca3b725c73b2ec20cd13a8fdd1 # pin@v2 | |
with: | |
terraform_version: 1.5.2 | |
terraform_wrapper: false | |
- name: Setup tool - install AWS cli | |
uses: unfor19/install-aws-cli-action@457b7980b125044247e455d87b9a26fc2299b787 # pin@v1 | |
- name: Prerequisite - Github actor name control to convert to the expected format (underscore and uppercase removed and size limited to 10 chars) | |
id: github_name_control | |
run: | | |
./github_actor_name_control.sh ${{ github.actor }} >> ACTOR | |
cat ACTOR | |
echo "ACTOR_PREFIX=$(cat ACTOR)" >> $GITHUB_ENV | |
echo ${{ env.ACTOR_PREFIX }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
working-directory: ./scripts | |
shell: bash | |
- name: Download ansible inventory and cluster name created during build phase | |
id: download_inventory | |
run: | | |
aws s3 cp s3://${{ github.event.inputs.NAME_PREFIX }}-${{ env.ACTOR_PREFIX }}-s3-tfstate/ansible_inventory.ini . | |
aws s3 cp s3://${{ github.event.inputs.NAME_PREFIX }}-${{ env.ACTOR_PREFIX }}-s3-tfstate/cluster_name.txt . | |
continue-on-error: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ${{ github.event.inputs.AWS_REGION }} | |
working-directory: ./ansible | |
shell: bash | |
- name: Set ESK Cluster_name | |
id: set_cluster_name | |
run: | | |
echo "EKS_CLUSTER_NAME=$(cat cluster_name.txt)" >> $GITHUB_ENV | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ${{ github.event.inputs.AWS_REGION }} | |
working-directory: ./ansible | |
shell: bash | |
- name: kubectl delete pretasks - Run Ansible playbook | |
uses: dawidd6/action-ansible-playbook@5d970176ea4bfd99a3f5004d48e293fe0994eda1 # pin@v2 | |
continue-on-error: true | |
with: | |
# Required, playbook filepath | |
playbook: delete-pretask.yml | |
# Directory where playbooks live | |
directory: ./ansible | |
# SSH private key to connect to host | |
key: ${{secrets.SSH_PRIVATE_KEY}} | |
# Optional, additional flags to pass to ansible-playbook | |
options: | | |
--inventory ansible_inventory.ini | |
--extra-vars target="ec2-bastion-public" | |
--extra-vars AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} | |
--extra-vars AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
--extra-vars AWS_DEFAULT_REGION=${{ github.event.inputs.AWS_REGION }} | |
--extra-vars EKS_CLUSTER_NAME=${{ env.EKS_CLUSTER_NAME }} | |
- name: Init - Terraform Init | |
id: init | |
run: terraform init -backend-config="bucket=${{ github.event.inputs.NAME_PREFIX }}-${{ env.ACTOR_PREFIX }}-s3-tfstate" -backend-config="key=${{ github.event.inputs.NAME_PREFIX }}-infra.tfstate" -backend-config="region=${{ github.event.inputs.AWS_REGION }}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ${{ github.event.inputs.AWS_REGION }} | |
working-directory: ./terraform/aws_infra | |
shell: bash | |
- name: Destroy - Terraform Destroy | |
id: destroy | |
run: terraform apply -destroy -var="region=${{ github.event.inputs.AWS_REGION }}" -var="name_prefix=${{ github.event.inputs.NAME_PREFIX }}-${{ env.ACTOR_PREFIX }}" -auto-approve | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ${{ github.event.inputs.AWS_REGION }} | |
working-directory: ./terraform/aws_infra | |
shell: bash | |
- name: Remove objects in S3 bucket | |
id: remove_objects_s3 | |
run: | | |
aws s3 rm s3://${{ github.event.inputs.NAME_PREFIX }}-${{ env.ACTOR_PREFIX }}-s3-tfstate --recursive | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ${{ github.event.inputs.AWS_REGION }} | |
shell: bash | |
- name: Delete S3 bucket | |
id: delete_s3 | |
run: | | |
aws s3api delete-bucket --bucket ${{ github.event.inputs.NAME_PREFIX }}-${{ env.ACTOR_PREFIX }}-s3-tfstate | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ${{ github.event.inputs.AWS_REGION }} | |
shell: bash |