From e31bb1bb51ddceba8f5eaccf401b7d2ba2f3e846 Mon Sep 17 00:00:00 2001 From: Admin1 Date: Mon, 27 Nov 2023 11:20:02 +0530 Subject: [PATCH] updated create_cluster.yaml --- .github/workflows/create_cluster.yaml | 392 +++++++++++++------------- 1 file changed, 196 insertions(+), 196 deletions(-) diff --git a/.github/workflows/create_cluster.yaml b/.github/workflows/create_cluster.yaml index ee89865f0..ea88506ee 100644 --- a/.github/workflows/create_cluster.yaml +++ b/.github/workflows/create_cluster.yaml @@ -50,214 +50,214 @@ jobs: with: name: config-as-code-artifact path: config-as-code.tar.gz - - name: Install AWS IAM Authenticator - run: | - curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator - chmod +x ./aws-iam-authenticator - sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator - aws-iam-authenticator version - - name: Generate kubeconfig - run: | - aws eks update-kubeconfig --region ${{ secrets.AWS_REGION }} --name $CLUSTER_NAME - cat ~/.kube/config > kubeconfig - - name: Deleting Loadbalancer - run: kubectl delete svc nginx-ingress-controller -n egov + # - name: Install AWS IAM Authenticator + # run: | + # curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator + # chmod +x ./aws-iam-authenticator + # sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator + # aws-iam-authenticator version + # - name: Generate kubeconfig + # run: | + # aws eks update-kubeconfig --region ${{ secrets.AWS_REGION }} --name $CLUSTER_NAME + # cat ~/.kube/config > kubeconfig + # - name: Deleting Loadbalancer + # run: kubectl delete svc nginx-ingress-controller -n egov + # - name: Terraform Init - remotestate + # run: terraform init + # working-directory: infra-as-code/terraform/sample-aws/remote-state + # - name: Terraform Validate - remotestate + # run: terraform validate -no-color + # working-directory: infra-as-code/terraform/sample-aws/remote-state + # - name: Terraform Init - Infra destruction + # run: terraform init + # working-directory: infra-as-code/terraform/sample-aws + # - name: Terraform Validate - Infra destruction + # run: terraform validate -no-color + # working-directory: infra-as-code/terraform/sample-aws + # - name: Terraform Plan - Infra destruction + # run: terraform plan -destroy -no-color -input=false -var db_password=demo123456 + # working-directory: infra-as-code/terraform/sample-aws + # - name: Terraform Destroy - Infra destruction + # run: terraform destroy -no-color -auto-approve -var db_password=demo123456 + # working-directory: infra-as-code/terraform/sample-aws + + Terraform_Infra_Creation: + needs: input_validation + runs-on: ubuntu-latest + env: + TF_IN_AUTOMATION: "true" + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + AWS_REGION: ${{ secrets.AWS_REGION }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Download infra-as-code folder from artifacts + uses: actions/download-artifact@v2 + with: + name: infra-as-code-artifact + path: . + - name: Download config-as-code folder from artifacts + uses: actions/download-artifact@v2 + with: + name: config-as-code-artifact + path: . + - name: Extract infra-as-code folder + run: tar -xzf infra-as-code.tar.gz + - name: Extract config-as-code folder + run: tar -xzf config-as-code.tar.gz + - name: Convert YAML to ENV + uses: dcarbone/yaml-to-env-action@main + with: + yaml-file: infra-as-code/terraform/sample-aws/input.yaml + debug: true # Optional: set to true to output some debug information + # Now, use the env vars in subsequent steps - name: Terraform Init - remotestate + id: init run: terraform init working-directory: infra-as-code/terraform/sample-aws/remote-state - name: Terraform Validate - remotestate + id: validate run: terraform validate -no-color + working-directory: infra-as-code/terraform/sample-aws/remote-state + - name: Terraform Plan - remotestate + id: plan + run: terraform plan -no-color -input=false working-directory: infra-as-code/terraform/sample-aws/remote-state - - name: Terraform Init - Infra destruction + - name: Terraform Apply - remotestate + id: apply + run: terraform apply -no-color -input=false -auto-approve + continue-on-error: true + working-directory: infra-as-code/terraform/sample-aws/remote-state + - name: Terraform init - Infra creation + id: init-Infra run: terraform init working-directory: infra-as-code/terraform/sample-aws - - name: Terraform Validate - Infra destruction + - name: Terraform Validate - Infra creation + id: validate-Infra run: terraform validate -no-color working-directory: infra-as-code/terraform/sample-aws - - name: Terraform Plan - Infra destruction - run: terraform plan -destroy -no-color -input=false -var db_password=demo123456 + - name: Terraform Plan - Infra creation + id: plan-Infra + run: terraform plan -no-color -input=false -var db_password=demo123456 working-directory: infra-as-code/terraform/sample-aws - - name: Terraform Destroy - Infra destruction - run: terraform destroy -no-color -auto-approve -var db_password=demo123456 - working-directory: infra-as-code/terraform/sample-aws - - # Terraform_Infra_Creation: - # needs: input_validation - # runs-on: ubuntu-latest - # env: - # TF_IN_AUTOMATION: "true" - # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - # AWS_REGION: ${{ secrets.AWS_REGION }} - # steps: - # - name: Checkout code - # uses: actions/checkout@v2 - # - name: Download infra-as-code folder from artifacts - # uses: actions/download-artifact@v2 - # with: - # name: infra-as-code-artifact - # path: . - # - name: Download config-as-code folder from artifacts - # uses: actions/download-artifact@v2 - # with: - # name: config-as-code-artifact - # path: . - # - name: Extract infra-as-code folder - # run: tar -xzf infra-as-code.tar.gz - # - name: Extract config-as-code folder - # run: tar -xzf config-as-code.tar.gz - # - name: Convert YAML to ENV - # uses: dcarbone/yaml-to-env-action@main - # with: - # yaml-file: infra-as-code/terraform/sample-aws/input.yaml - # debug: true # Optional: set to true to output some debug information - # # Now, use the env vars in subsequent steps - # - name: Terraform Init - remotestate - # id: init - # run: terraform init - # working-directory: infra-as-code/terraform/sample-aws/remote-state - # - name: Terraform Validate - remotestate - # id: validate - # run: terraform validate -no-color - # working-directory: infra-as-code/terraform/sample-aws/remote-state - # - name: Terraform Plan - remotestate - # id: plan - # run: terraform plan -no-color -input=false - # working-directory: infra-as-code/terraform/sample-aws/remote-state - # - name: Terraform Apply - remotestate - # id: apply - # run: terraform apply -no-color -input=false -auto-approve - # continue-on-error: true - # working-directory: infra-as-code/terraform/sample-aws/remote-state - # - name: Terraform init - Infra creation - # id: init-Infra - # run: terraform init - # working-directory: infra-as-code/terraform/sample-aws - # - name: Terraform Validate - Infra creation - # id: validate-Infra - # run: terraform validate -no-color - # working-directory: infra-as-code/terraform/sample-aws - # - name: Terraform Plan - Infra creation - # id: plan-Infra - # run: terraform plan -no-color -input=false -var db_password=demo123456 - # working-directory: infra-as-code/terraform/sample-aws - # - name: Terraform Apply - Infra creation - # id: apply-Infra - # run: terraform apply -no-color -input=false -auto-approve -var db_password=demo123456 - # continue-on-error: true - # working-directory: infra-as-code/terraform/sample-aws - # - name: Install AWS IAM Authenticator - # run: | - # curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator - # chmod +x ./aws-iam-authenticator - # sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator - # aws-iam-authenticator version - # - name: Generate kubeconfig - # run: | - # aws eks update-kubeconfig --region ${{ secrets.AWS_REGION }} --name $CLUSTER_NAME - # cat ~/.kube/config > kubeconfig - # - name: Verify kubectl configuration - # run: kubectl config view - # - name: Verfiy kubectl get nodes - # run: | - # kubectl get nodes - # env: - # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - # AWS_REGION: ${{ secrets.AWS_REGION }} - # - name: Updating the terraform output data in environment.yaml files for deployment - # run: terraform output -json | go run ../scripts/envYAMLUpdater.go - # working-directory: infra-as-code/terraform/sample-aws - # - name: Archive infra-as-code folder - # run: tar -czf infra-as-code.tar.gz infra-as-code/ - # - name: Archive config-as-code folder - # run: tar -czf config-as-code.tar.gz config-as-code/ - # - name: Upload infra-as-code folder as artifact - # uses: actions/upload-artifact@v2 - # with: - # name: infra-as-code-artifact - # path: infra-as-code.tar.gz - # - name: Upload config-as-code folder as artifact - # uses: actions/upload-artifact@v2 - # with: - # name: config-as-code-artifact - # path: config-as-code.tar.gz + - name: Terraform Apply - Infra creation + id: apply-Infra + run: terraform apply -no-color -input=false -auto-approve -var db_password=demo123456 + continue-on-error: true + working-directory: infra-as-code/terraform/sample-aws + - name: Install AWS IAM Authenticator + run: | + curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator + chmod +x ./aws-iam-authenticator + sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator + aws-iam-authenticator version + - name: Generate kubeconfig + run: | + aws eks update-kubeconfig --region ${{ secrets.AWS_REGION }} --name $CLUSTER_NAME + cat ~/.kube/config > kubeconfig + - name: Verify kubectl configuration + run: kubectl config view + - name: Verfiy kubectl get nodes + run: | + kubectl get nodes + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + AWS_REGION: ${{ secrets.AWS_REGION }} + - name: Updating the terraform output data in environment.yaml files for deployment + run: terraform output -json | go run ../scripts/envYAMLUpdater.go + working-directory: infra-as-code/terraform/sample-aws + - name: Archive infra-as-code folder + run: tar -czf infra-as-code.tar.gz infra-as-code/ + - name: Archive config-as-code folder + run: tar -czf config-as-code.tar.gz config-as-code/ + - name: Upload infra-as-code folder as artifact + uses: actions/upload-artifact@v2 + with: + name: infra-as-code-artifact + path: infra-as-code.tar.gz + - name: Upload config-as-code folder as artifact + uses: actions/upload-artifact@v2 + with: + name: config-as-code-artifact + path: config-as-code.tar.gz - # DIGIT-deployment: - # needs: Terraform_Infra_Creation - # runs-on: ubuntu-latest - # env: - # TF_IN_AUTOMATION: "true" - # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - # AWS_REGION: ${{ secrets.AWS_REGION }} - # steps: - # - name: Checkout code - # uses: actions/checkout@v2 - # - name: Download infra-as-code folder from artifacts - # uses: actions/download-artifact@v2 - # with: - # name: infra-as-code-artifact - # path: . - # - name: Download config-as-code folder from artifacts - # uses: actions/download-artifact@v2 - # with: - # name: config-as-code-artifact - # path: . - # - name: Extract infra-as-code folder - # run: tar -xzf infra-as-code.tar.gz - # - name: Extract config-as-code folder - # run: tar -xzf config-as-code.tar.gz - # - name: Convert YAML to ENV - # uses: dcarbone/yaml-to-env-action@main - # with: - # yaml-file: infra-as-code/terraform/sample-aws/input.yaml - # debug: true # Optional: set to true to output some debug information - # # Now, use the env vars in subsequent steps - # - name: Install AWS IAM Authenticator - # run: | - # curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator - # chmod +x ./aws-iam-authenticator - # sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator - # aws-iam-authenticator version - # - name: Generate kubeconfig - # run: | - # aws eks update-kubeconfig --region ${{ secrets.AWS_REGION }} --name $CLUSTER_NAME - # cat ~/.kube/config > kubeconfig - # - name: Verify kubectl configuration - # run: kubectl config view - # - name: Verfiy kubectl get nodes - # run: | - # kubectl get nodes - # env: - # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - # AWS_REGION: ${{ secrets.AWS_REGION }} - # - name: Install sops - # run: | - # sudo apt update - # sudo apt install -y gnupg - # wget https://github.com/mozilla/sops/releases/download/v3.7.1/sops-v3.7.1.linux - # chmod +x sops-v3.7.1.linux - # sudo mv sops-v3.7.1.linux /usr/local/bin/sops - # - name: digit deployment - # run: go run digit_installer.go - # working-directory: deploy-as-code/deployer - # - name: Displaying the Loadbalancer ID - # run: | - # LB_ID=$(kubectl get svc nginx-ingress-controller -n egov -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') - # echo "LoadBalancer ID: $LB_ID" - # echo "Thank you for installing DIGIT! 🙏 Your installation is complete and ready to roll! 🚀" - # echo "Please map the LoadBalancer ID ($LB_ID) with the domain provided in input.yaml to access the DIGIT UI" - # env: - # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - # AWS_REGION: ${{ secrets.AWS_REGION }} + DIGIT-deployment: + needs: Terraform_Infra_Creation + runs-on: ubuntu-latest + env: + TF_IN_AUTOMATION: "true" + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + AWS_REGION: ${{ secrets.AWS_REGION }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Download infra-as-code folder from artifacts + uses: actions/download-artifact@v2 + with: + name: infra-as-code-artifact + path: . + - name: Download config-as-code folder from artifacts + uses: actions/download-artifact@v2 + with: + name: config-as-code-artifact + path: . + - name: Extract infra-as-code folder + run: tar -xzf infra-as-code.tar.gz + - name: Extract config-as-code folder + run: tar -xzf config-as-code.tar.gz + - name: Convert YAML to ENV + uses: dcarbone/yaml-to-env-action@main + with: + yaml-file: infra-as-code/terraform/sample-aws/input.yaml + debug: true # Optional: set to true to output some debug information + # Now, use the env vars in subsequent steps + - name: Install AWS IAM Authenticator + run: | + curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator + chmod +x ./aws-iam-authenticator + sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator + aws-iam-authenticator version + - name: Generate kubeconfig + run: | + aws eks update-kubeconfig --region ${{ secrets.AWS_REGION }} --name $CLUSTER_NAME + cat ~/.kube/config > kubeconfig + - name: Verify kubectl configuration + run: kubectl config view + - name: Verfiy kubectl get nodes + run: | + kubectl get nodes + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + AWS_REGION: ${{ secrets.AWS_REGION }} + - name: Install sops + run: | + sudo apt update + sudo apt install -y gnupg + wget https://github.com/mozilla/sops/releases/download/v3.7.1/sops-v3.7.1.linux + chmod +x sops-v3.7.1.linux + sudo mv sops-v3.7.1.linux /usr/local/bin/sops + - name: digit deployment + run: go run digit_installer.go + working-directory: deploy-as-code/deployer + - name: Displaying the Loadbalancer ID + run: | + LB_ID=$(kubectl get svc nginx-ingress-controller -n egov -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') + echo "LoadBalancer ID: $LB_ID" + echo "Thank you for installing DIGIT! 🙏 Your installation is complete and ready to roll! 🚀" + echo "Please map the LoadBalancer ID ($LB_ID) with the domain provided in input.yaml to access the DIGIT UI" + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + AWS_REGION: ${{ secrets.AWS_REGION }} # terraform_infra_destruction: