WSL에서 Terraform 사용하기
노트북 포맷한 김에 작성하는 글.
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
Terraform v1.6.6
on linux_amd64
AWS CLI 설치
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ sudo apt install unzip
$ unzip awscliv2.zip
$ sudo ./aws/install
$ aws --version
aws-cli/2.15.4 Python/3.11.6 Linux/5.15.133.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off
AWS CLI 로그인
IAM 사용자 생성 및 액세스 키 발급 필요
Default 계정 등록
$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-2
Default output format [None]: json
$ aws configure list
Terraform 테스트
테스트 디렉터리 생성
$ mkdir terraform_test
$ cd terraform_test/
VSCode Extensions 설치

main.tf 작성
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.31.0"
}
}
}
provider "aws" {}
resource "aws_s3_bucket" "test_bucket" {
bucket = "test-bucket-a124daszxv"
}
terraform 초기화 및 리소스 생성
$ terraform init
$ terraform apply -auto-approve
...
Plan: 1 to add, 0 to change, 0 to destroy.
aws_s3_bucket.test_bucket: Creating...
aws_s3_bucket.test_bucket: Creation complete after 2s [id=test-bucket-a124daszxv]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
$ aws s3 ls
2023-12-27 20:12:14 test-bucket-a124daszxv
리소스 제거
$ terraform destroy --auto-approve
...
Plan: 0 to add, 0 to change, 1 to destroy.
aws_s3_bucket.test_bucket: Destroying... [id=test-bucket-a124daszxv]
aws_s3_bucket.test_bucket: Destruction complete after 0s
Destroy complete! Resources: 1 destroyed.