Skip to content
Open

Stage #138

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/terraform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: "vprofile IAC"

on:
push:
branches:
- main
- stage
paths:
- terraform/**
pull_request:
branches:
- main
paths:
- terraform/**

env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
BUCKET_TF_STATE: ${{ secrets.BUCKET_TF_STATE }}
AWS_REGION: ap-south-1
EKS_CLUSTER: vprofile-eks

jobs:
terraform:
name: "Terraform Apply code changes"
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: ./terraform
steps:
- name: "Checkout sourrce code"
uses: actions/checkout@v4
# with:
# terraform_version: 1.7.5

- name: "Set up Terraform"
uses: hashicorp/setup-terraform@v2

- name: "Terraform Init"
id: init
run: terraform init -backend-config="bucket=${BUCKET_TF_STATE}"

- name: Terraform Format
id: fmt
run: terraform fmt -check

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

- name: "Terraform Plan"
id: plan
run: terraform plan -no-color -input=false -out planfile
continue-on-error: true

- name: "Teraform plan status"
if: steps.plan.outcome == 'failure'
run: echo "Terraform plan failed. Please fix the issues before applying."

- name: "Terraform Apply"
id: apply
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: terraform apply -auto-approve -input=false -parallelism=1 planfile

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-south-1

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

- name: Install Ingress Controller
if: steps.apply.outcome == 'success' && steps.getconfig.outcome == 'success'
run: kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/aws/deploy.yaml
4 changes: 2 additions & 2 deletions terraform/eks-cluster.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module "eks" {
version = "19.19.1"

cluster_name = local.cluster_name
cluster_version = "1.27"
cluster_version = "1.32"

vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
Expand Down Expand Up @@ -35,4 +35,4 @@ module "eks" {
desired_size = 1
}
}
}
}
2 changes: 0 additions & 2 deletions terraform/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,3 @@ data "aws_availability_zones" "available" {}
locals {
cluster_name = var.clusterName
}

##
2 changes: 1 addition & 1 deletion terraform/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ output "region" {
output "cluster_security_group_id" {
description = "Security group ID for the Amazon Web Service EKS Cluster "
value = module.eks.cluster_security_group_id
}
}
14 changes: 8 additions & 6 deletions terraform/terraform.tf
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@ terraform {
}

backend "s3" {
bucket = "gitopsterrastate"
bucket = "vprofileactions0702"
key = "terraform.tfstate"
region = "us-east-2"
region = "ap-south-1"
}

required_version = "~> 1.6.3"
required_version = "~> 1.13.0"
}
##
##
##

# first edit
# modified URL in last step of terraform.yml
# modifeid the URL before script
# checking only stage and main
4 changes: 2 additions & 2 deletions terraform/variables.tf
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
variable "region" {
description = "AWS region"
type = string
default = "us-east-2"
default = "ap-south-1"
}

variable "clusterName" {
description = "Name of the EKS cluster"
type = string
default = "kitops-eks"
default = "vprofile-eks"
}
2 changes: 1 addition & 1 deletion terraform/vpc.tf
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ module "vpc" {
"kubernetes.io/cluster/${local.cluster_name}" = "shared"
"kubernetes.io/role/internal-elb" = 1
}
}
}