Skip to content

Terraform Plan and Apply #69

Terraform Plan and Apply

Terraform Plan and Apply #69

Workflow file for this run

name: Terraform Plan and Apply
on:
# push:
# branches:
# - main
workflow_dispatch:
jobs:
terraform:
runs-on: ubuntu-latest
env:
TF_TOKEN_app_terraform_io: ${{ secrets.TF_TOKEN_APP_TERRAFORM_IO }}
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
defaults:
run:
working-directory: ./terraform
steps:
- uses: actions/checkout@v2
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: latest
- run: terraform init
- run: terraform plan -out=tfplan
- name: Validate terraform formatting
run: terraform fmt -check
- name: Terraform Validate
run: terraform validate
- run: terraform apply -auto-approve tfplan
- name: Get Master Public IP
id: master_ip
run: echo "MASTER_IP=$(bash ./scripts/get_master_ip.sh)" >> $GITHUB_ENV
working-directory: .
- name: Update No-IP DDNS with API
run: |
curl -s -u "${{ secrets.NOIP_USERNAME }}:${{ secrets.NOIP_PASSWORD }}" \
"https://dynupdate.no-ip.com/nic/update?hostname=${{ secrets.NOIP_HOST }}&myip=$MASTER_IP&wildcard=YES"
- name: Send Slack alert
run: |
curl -X POST -H 'Content-type: application/json' --data '{"text":"Terraform infrastructure has been provisioned, NOIP ddns has been configured in https://teleport.exploravis.ddns.net/"}' ${{ secrets.SLACK_WEBHOOK }}
ansible:
name: Ansible Kubernetes Deployment
runs-on: ubuntu-latest
needs: terraform
env:
TF_TOKEN_app_terraform_io: ${{ secrets.TF_TOKEN_APP_TERRAFORM_IO }}
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
defaults:
run:
working-directory: .
steps:
- name: Checkout repo
uses: actions/checkout@v2
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: latest
- run: terraform init -reconfigure
working-directory: ./terraform
- name: Generate ansible inventory
run: bash ./scripts/generate_ansible_inv.sh
- name: Run Ansible Inventory
run: bash ./scripts/install_k3s.sh
- name: Send Slack alert
run: |
curl -X POST -H 'Content-type: application/json' --data '{"text":"Kubernetes has been installed and configured on the cluster"}' ${{ secrets.SLACK_WEBHOOK }}
teleport:
name: Install and setup Teleport with github
runs-on: ubuntu-latest
needs: ansible
env:
TF_TOKEN_app_terraform_io: ${{ secrets.TF_TOKEN_APP_TERRAFORM_IO }}
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
EA_GITHUB_CLIENT_ID: ${{ secrets.EA_GITHUB_CLIENT_ID }}
EA_GITHUB_CLIENT_SECRET: ${{ secrets.EA_GITHUB_CLIENT_SECRET }}
ANSIBLE_VAULT_PASSWORD: ${{ secrets.ANSIBLE_VAULT_PASSWORD }}
defaults:
run:
working-directory: .
steps:
- name: Checkout repo
uses: actions/checkout@v2
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: latest
- run: terraform init -reconfigure
working-directory: ./terraform
- name: Generate ansible inventory
run: bash ./scripts/generate_ansible_inv.sh
- name: Run Ansible Inventory
run: bash ./scripts/setup_teleport.sh
- name: Send Slack alert
run: |
curl -X POST -H 'Content-type: application/json' --data '{"text":"Teleport has been installed and configured on the master VM https://teleport.exploravis.ddns.net"}' ${{ secrets.SLACK_WEBHOOK }}