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.