Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stage #29

Open
wants to merge 18 commits into
base: main
Choose a base branch
from
95 changes: 95 additions & 0 deletions .github/workflows/terraform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: "Vprofile IAC"
on:
push:
branches:
- main
- stage
paths:
- terraform/**
pull_request:
branches:
- main
paths:
- terraform/**

# on: workflow_dispatch # only run the workflow when we manually trigger it. Later change

env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
BUCKET_TF_STAGE: ${{ secrets.BUCKET_TF_STAGE }}
AWS_REGION: us-east-2
EKS_CLUSTER: gitops-eks

jobs:
terraform:
name: "Apply terraform code changes"
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: ./terraform

steps:
# https://github.com/marketplace?category=&type=actions&verification=&query=checkout
- name: Checkout source code
uses: actions/checkout@v4

- name: Setup Terraform with specified version on the runner
uses: hashicorp/setup-terraform@v2
# with:
# terraform_version: 1.6.3

- name: Terraform init
id: init
run: terraform init -backend-config="bucket=$BUCKET_TF_STAGE"

- name: Terraform format
id: fmt
run: terraform fmt -check
# if the format of the code is not correct, it will return non-zero exit code and will fail the workflow
# then someone needs to make the correct format of the code, then again, commit the code.

- name: Terraform validate
id: validate
run: terraform validate

- name: Terraform plan
id: plan
run: terraform plan -no-color -input -out planfile
# -no-color: save some GPU
# -input: not passing any input
# -out planfile: avoid the parralle execution Terraform. This is to avoid bug in github action
continue-on-error: true
# we have a different way of failing this. Because we cannot really rely on this.

- name: Terraform plan status
if: steps.plan.outcome == 'failure'
# if that variable value is failure, then we will execute command exit one, or anything that you can give, anything apart from zero
# When exit gets executed, it is going to kill that container and the workflow fail.
run: exit 1

# new
- name: Terraform apply
id: apple
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
# if gitHub.ref is equal to main branch AND if there is a push github.event_name equal to push
run: terraform apply -auto-approve -input=false -parallelism=1 planfile
# -parallelism=1 to avoid bug in github actions


- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Get Kube config file
id: getconfig
if: steps.apple.outcome == 'success'
run: aws eks update-kubeconfig --region ${{ env.AWS_REGION }} --name ${{ env.EKS_CLUSTER }}

- name: Install Ingress controller
if: steps.apple.outcome == 'success' && steps.getconfig.outcome == 'success'
run: kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.3/deploy/static/provider/aws/deploy.yaml
2 changes: 1 addition & 1 deletion terraform/eks-cluster.tf
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ module "eks" {

min_size = 1
max_size = 3
desired_size = 2
desired_size = 1
}

two = {
Expand Down
7 changes: 2 additions & 5 deletions terraform/terraform.tf
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,10 @@ terraform {
}

backend "s3" {
bucket = "gitopsterrastate"
bucket = "vprofileactions22"
key = "terraform.tfstate"
region = "us-east-2"
}

required_version = "~> 1.6.3"
required_version = "~> 1.7.5"
}
##
##
##
2 changes: 1 addition & 1 deletion terraform/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ variable "region" {
variable "clusterName" {
description = "Name of the EKS cluster"
type = string
default = "kitops-eks"
default = "gitops-eks"
}