ကျွန်တော် sharing လုပ်ချင်တာက AWS ပေါ်မှာ IaC ( Infrastructure as Code ) ကို Terraform သုံးပြီးဘယ်လို Implement လုပ်ရမလဲ ကို sharing လုပ်ချင်ပါတယ်.
အရင်ဆုံးကျွန်တော်တို့ High Level Design ကိုကြည့်ရအောင်.

# Prerequisite
- AWS Root Account or IAM Account with Admin Privilege Role
- AWS Programmatic Access Key ( Access Key ID & Secret Access Key )
- Linux, Mac or Windows (WSL) with Terminal ( Bash Shell or Z Shell )
- Microsoft VSCode
- AWS CLI
- Terraform Binary or Cloud
- Git Account
* AWS Account *
အောက်ပါ link မှာ AWS Root Account ကို create လုပ်ပါ.
https://portal.aws.amazon.com/billing/signup#/start
* AWS IAM Account *
IAM Account တစ်ခု create လုပ်ပါ. IAM Account ကို Programmatic Access and Management Console Access ပေးပါ.

# IAM Account ကို Admin Policy attach လုပ်ပါ.

* AWS Programmatic Access *
AWS Root or IAM User Account ရဲ့ access key or secret access key ကို download ယူထားပါ.

*Linux, Mac or WSL Terminal *
ကျွန်တော်က ubuntu terminal နဲ့ Z Shell ကို သုံးထားပါတယ်. ကိုယ်ကြိုက်ရာ SHELL ကိုသုံးလို့ရပါတယ် ( Bash ).

*AWS CLI V2*
AWS CLI Version 2 ကိုယ်ကြိုက်ရာ OS အတွက် Install လုပ်ပါ.
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
ကျွန်တော်က Linux OS မှာ Install လုပ်ထားပါတယ်.
ပြီးရင် aws programmatic access အတွက် access key နဲ့ secret access key ကို AWS CLI ကိုသုံးပြီးထည့်ပါ.

> aws sts get-callert-identity ကိုသုံးပြီး aws programmatic access ကို Test လုပ်ပါ.
*Terraform Binary*
ကျွန်တော်က Linux OS မှာ Install လုပ်ထားပါတယ်.
https://www.terraform.io/docs/cli/install/apt.html
အခြား OS တွေအတွက်
https://www.terraform.io/downloads.html
ပြီးရင် project တစ်ခုအတွက် folder တစ်ခုစီခွဲ ထားပါ.

> terraform init ( terraform registry က aws provider ကို download )
> terraform plan ( terraform manage လုပ်မဲ step by step action )
> terraform apply ( terraform plan ကို API call အနေနဲ့ convert )
>terraform state list
>terraform show ( terraform state file ရဲ့ resources ကို ဖော်ပြ )



*ကျွန်တော်တို့ terraform နဲ့ manage လုပ်ထားတာတွေကိုပြန်ဖျက်ချင်ရင်
>terraform destroy
Terraform နဲ့ Manage လုပ်ထားတဲ့ resource တွေရဲ့ state ကို terraform.tfstate မှာမှတ်ထားပါတယ်.


တစ်ကယ်လို့ ကိုယ့် project ကို git မှာ တင်မယ်ဆိုရင်အောက်ပါ file extension များကို ignore လုပ်ပါ. file size ကြီးတာနဲ့ security ကြောင့်ပါ.

Terraform Sample TF File

Terraform ကိုဆက်လေ့လာလိုလျှင်
https://learn.hashicorp.com/collections/terraform/certification
https://www.amazon.sg/Terraform-Running-Writing-Infrastructure-Code/dp/1492046906
” Thanks for your time Mate “