diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml new file mode 100644 index 000000000..f602d5433 --- /dev/null +++ b/.github/workflows/terraform.yml @@ -0,0 +1,70 @@ +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: us-east-2 + EKS_CLUSTER: vprofile-eks + +jobs: + terraform: + name: "apply terraform code changes" + runs-on: ubuntu-latest + defaults: + run: + shell: bash + working-directory: ./terraform + + steps: + - name: Checkout source code + uses: actions/checkout@v4 + - name: Setup Terraform + uses: hashicorp/setup-terraform@v2 + with: + terraform_version: 1.6.3 + - 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: Terraform plan status + if: steps.plan.outcome == 'failure' + run: exit 1 + - 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: ${{ env.AWS_REGION }} + - name: Get kube config file + id: getconfig + if: steps.apply.outcome == 'success' + run: aws eks update-kubeconfig --name $EKS_CLUSTER --region ${{ env.AWS_REGION }} --name $EKS_CLUSTER + + - name: Install Ingress controller + if: steps.apply.outcome == 'success' && steps.getconfig.outcome == 'success' + run: kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/aws/deploy.yaml diff --git a/terraform/eks-cluster.tf b/terraform/eks-cluster.tf index 2c4610920..4ae8460f1 100644 --- a/terraform/eks-cluster.tf +++ b/terraform/eks-cluster.tf @@ -3,14 +3,14 @@ module "eks" { version = "19.19.1" cluster_name = local.cluster_name - cluster_version = "1.27" + cluster_version = "1.34" vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnets cluster_endpoint_public_access = true eks_managed_node_group_defaults = { - ami_type = "AL2_x86_64" + ami_type = "AL2023_x86_64_STANDARD" } diff --git a/terraform/terraform.tf b/terraform/terraform.tf index 67b75c673..761debd3e 100644 --- a/terraform/terraform.tf +++ b/terraform/terraform.tf @@ -2,7 +2,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = "~> 5.25.0" + version = "~> 5.40.0" } random = { @@ -27,7 +27,7 @@ terraform { } backend "s3" { - bucket = "gitopsterrastate" + bucket = "vprofileactions2920" key = "terraform.tfstate" region = "us-east-2" } @@ -36,4 +36,4 @@ terraform { } ## ## -## +#### diff --git a/terraform/variables.tf b/terraform/variables.tf index a41d982a0..3e49f4a09 100644 --- a/terraform/variables.tf +++ b/terraform/variables.tf @@ -7,5 +7,5 @@ variable "region" { variable "clusterName" { description = "Name of the EKS cluster" type = string - default = "kitops-eks" + default = "vprofile-eks" }