IaC/Terraform

[Terraform] Terraform Cloud

nayoungs 2022. 4. 26. 02:50
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

Backends Configuaraion

organization name은 전세계에서 유일해야한다.

 

wordspace 생성 : CLI 선택 후 Name 입력 - [Creatae Workspace]

 

 

local에서 terraform 연결

$ 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