728x90
📌INDEX
- 백엔드(Backend)
- Terraform Cloud
✔️ 백엔드(Backend)
현재 사용하고 있는 백엔드: Local Backend
s3에 상태를 저장하고 공유 : s3, dynamo DB 를 이용한 원격 백엔드
예시
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
동시에 접근하는 것을 방지하기 위해 locking 사용하며,
s3는 잠금 기능이 없기 때문에 dynamodb를 사용하여 locking한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem"
],
"Resource": "arn:aws:dynamodb:*:*:table/mytable"
}
]
}
but, terraform cloud가 나오면서 잘 사용하지 않는 방법이 되었다.
✔️ Terraform Cloud
organization name은 전세계에서 유일해야한다.
wordspace 생성 : CLI 선택 후 Name 입력 - [Creatae Workspace]
local에서 terraform 연결
$ terraform login
- https://app.terraform.io/app/settings/tokens?source=terraform-login 에서 토큰 생성 후 복사한다.
Backend 설정은 terraform block 내에 backend 서브 블록을 이용해 설정 : workspace생성 후 overview에서 확인할 수 있다.
📝provider.tf
terraform {
backend "remote" {
organization = "example_corp"
workspaces {
name = "my-app-prod"
}
}
}
[Settings] - [Execution Mode]
Remote 는 Git이 연결되어있어야하고, CLI Type은 local이 되어야한다.
현재는 Git 연동이 안되어있으므로, local로 수정한다.
설정완료 후 terraform init
로컬의 상태를 terraform cloud로 옮겨가는 것(migrate)이다
$ terraform init
apply 하기
$ terraform apply
- workspace에 상태가 저장되어있음을 확인할 수 있다.
- terraform.tfstate 파일이 없어도 terraform 상태를 확인할 수 있다 : terraform cloud에 저장되어있기 때문
$ terraform destroy
destory 중에는 workspace state에서 locking 되어있음을 확인할 수 있다
728x90