Terraform Automation with Github & Atlantis - Session 1

Terraform Automation with Github & Atlantis - Session 1

Keep Your Terraform code DRY

Define terraform code once, no matter how many environments you have.

Kenapa kita menggunakan bantuan Terragrunt selain dari Terraform?? dengan Terragrunt memudahkan kita untuk memanage Terraform module jika sudah sangat kompleks.

Prepare

Create Personal Access Token

Personal access token ini digunakan untuk mengakses dengan autentifikasi sesuai role permissions. untuk membuat Personal acess token ini kita perlu login ke akun github, ke bagian Settings > Developer Settings > Personal Access Token > Tokens (classic) -> Generate new Token > Generate new Token (classic).

Kasih nama token nya, select scopes nya sesuaikan saja kebutuhan jika sudah generate token simpan token tersebut.

Next kita buat Repository Github

buat repository name nya, dan buat Private. karna tidak mungkin kan infrastructure kita di lihat orang publik.

Create VM AWS EC2

Selanjut nya kita persiapkan server di AWS EC2 yang nanti akan kita install terraform, terragrunt dan alantis karena kita tidak lagi create di local. Buat saja AWS EC2 instance dengan OS Ubuntu 20.04 LTS dengan spek terendah tidak harus tinggi2 untuk menyiapkan nya.

Install Terragrunt

Jika sudah menyiapkan server selanjutnya kita akan Install Terragrunt .

$ sudo apt update
$ wget https://github.com/gruntwork-io/terragrunt/releases/download/v0.42.5/terragrunt_linux_amd64
$ mv terragrunt_linux_amd64 terragrunt
$ chmod u+x terragrunt
$ sudo mv terragrunt /usr/local/bin/terragrunt
$ terragrunt --version
terragrunt version v0.42.5

Install Terraform

Selanjutnya kita Install Terraform.

$ sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
$ wget -O- https://apt.releases.hashicorp.com/gpg | \
    gpg --dearmor | \
    sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
$ gpg --no-default-keyring \
    --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
    --fingerprint
$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
    https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
    sudo tee /etc/apt/sources.list.d/hashicorp.list
$ sudo apt update
$ sudo apt-get install terraform
$ terraform --version

Install Atlantis

Next install atlantis (https://github.com/runatlantis/atlantis/releases).

$ wget https://github.com/runatlantis/atlantis/releases/download/v0.22.0-pre.20221226/atlantis_linux_amd64.zip
$ sudo apt install unzip
$ unzip atlantis_linux_amd64.zip
$ sudo mv atlantis /usr/local/bin/
$ atlantis version

GitHub Webhook

sudah semua di install next kita akan atur Github Webhook

ke bagian Settings > Webhooks > Add Webhooks.

Payload URL : http://ippublic/events

content-type : application/json

secret : terserah nama nya tapi di simpan

Which events would you like to trigger this webhook :

  • Pull request reviews

  • Pushes

  • Issue comments

  • Pull requests

Check Active

And Add webhook