From eca87c133241cf6a9ddd921910471dde4c3dfd01 Mon Sep 17 00:00:00 2001 From: Okesanya Odunayo <94924061+DrInTech22@users.noreply.github.com> Date: Wed, 11 Dec 2024 08:13:05 +0100 Subject: [PATCH 1/2] add terraform apply yml --- .github/workflows/terraform-apply.yml | 62 +++++++++++++++++++++++++++ terraform/ec2.tf | 14 ------ 2 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/terraform-apply.yml diff --git a/.github/workflows/terraform-apply.yml b/.github/workflows/terraform-apply.yml new file mode 100644 index 0000000..ce2fa08 --- /dev/null +++ b/.github/workflows/terraform-apply.yml @@ -0,0 +1,62 @@ +name: Terraform Apply +run-name: ${{ github.actor }} triggered the pipeline + +on: + workflow_dispatch: + inputs: + operation: + description: 'Choose the Terraform operation (apply or destroy)' + required: true + default: 'apply' + push: + branches: + - 'infra_main' + # path: + # - '../terraform/**' + +env: + AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + TF_VAR_aws_region: ${{ vars.TF_AWS_REGION }} + TF_VAR_ami_id: ${{ vars.TF_AMI_ID }} + TF_VAR_instance_type: ${{ vars.TF_INSTANCE_TYPE }} + TF_VAR_key_pair_name: ${{ vars.TF_KEY_PAIR_NAME }} + TF_VAR_private_key: ${{ secrets.PRIVATE_KEY }} + TF_VAR_domain_name: ${{ vars.TF_DOMAIN_NAME }} + TF_VAR_frontend_domain: ${{ vars.TF_FRONTEND_DOMAIN }} + TF_VAR_db_domain: ${{ vars.TF_DB_DOMAIN }} + TF_VAR_traefik_domain: ${{ vars.TF_TRAEFIK_DOMAIN }} + TF_VAR_cert_email: ${{ secrets.TF_CERT_EMAIL }} + TF_VAR_private_key_path: ./${{ vars.TF_KEY_PAIR_NAME }}.pem + +jobs: + build-infra: + name: terraform-ci-cd + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Write Private Key to File + run: | + echo "${{ secrets.PRIVATE_KEY }}" > ${{ vars.TF_KEY_PAIR_NAME }}.pem + chmod 600 ${{ vars.TF_KEY_PAIR_NAME }}.pem + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v2 + + - name: Terraform Init + id: init + run: terraform init + working-directory: ./terraform + + - name: Terraform Operation + id: terraform-operation + run: | + if [ "${{ github.event.inputs.operation }}" = "destroy" ]; then + terraform destroy --auto-approve + else + terraform apply --auto-approve + fi + working-directory: ./terraform + \ No newline at end of file diff --git a/terraform/ec2.tf b/terraform/ec2.tf index 83f614b..06e9579 100644 --- a/terraform/ec2.tf +++ b/terraform/ec2.tf @@ -13,17 +13,3 @@ resource "aws_instance" "ec2" { } } -resource "aws_instance" "ec2-1" { - ami = var.ami_id - instance_type = var.instance_type - key_name = var.key_pair_name - subnet_id = aws_subnet.public_subnet.id - vpc_security_group_ids = [aws_security_group.sg.id] - tags = { - Name = var.ec2_name - } - - provisioner "local-exec" { - command = "echo 'Instance provisioned: ${self.public_ip}'" - } -} \ No newline at end of file From fb9820587abe6ea4578355ffb9c55e4c1b000bfc Mon Sep 17 00:00:00 2001 From: Okesanya Odunayo <94924061+DrInTech22@users.noreply.github.com> Date: Wed, 11 Dec 2024 08:21:49 +0100 Subject: [PATCH 2/2] modify terraform-plan.yml --- .github/workflows/terraform-plan.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/terraform-plan.yml b/.github/workflows/terraform-plan.yml index 25bc579..5a31f5d 100644 --- a/.github/workflows/terraform-plan.yml +++ b/.github/workflows/terraform-plan.yml @@ -105,8 +105,7 @@ jobs: const plan = fs.readFileSync('/tmp/tfplan.txt', 'utf8'); const infracost = fs.readFileSync('/tmp/infracost-new.txt', 'utf8'); - const output = `#### Terraform Format and Style 🖌\`${{ steps.fmt.outcome }}\` - #### Terraform Plan 📖\`${{ steps.plan.outcome }}\` + const output = `#### Terraform Plan 📖\`${{ steps.plan.outcome }}\`
Show Plan