Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Terraform Cloud에서 workspace 사용하기

AWS S3 등을 제외하고도 Terraform Cloud에서 상태관리를 할 수 있는데 Terraform의 Workspace를 사용해 보면서 설정을 해보게 되었다. Workspace 관련해서는 이전에 Terraform workspace의 활용에서 설명한 적이 있다.

먼저 다음과 같은 terraform.tf 설정 파일을 만든다.(파일명은 상관없다.)

terraform {
  backend "remote" {
    organization = "outsider"
    workspaces {
      prefix = "s3-"
    }
  }
}

여기서 workspaces 부분은 앞에서 말한 Workspace보다는 Terraform Cloud의 Workspace를 얘기하는 건데 완전히 일치하지는 않지만, 어느 정도 같은 개념이기는 하다. 보통 워크스페이스를 하나 만들고 설정하면 name 키를 이용해서 워크스페이스의 이름을 지정해야 하지만 워크스페이스를 쓰려면 prefix를 써야 한다. AWS S3를 백엔드로 쓸 때key와 함께 workspace_key_prefix를 써야 한다.

$ terraform init

Initializing the backend...

Successfully configured the backend "remote"! Terraform will automatically
use this backend unless the backend configuration changes.

Error: No existing workspaces.

Use the "terraform workspace" command to create and select a new workspace.
If the backend already contains existing workspaces, you may need to update
the backend configuration.

Terraform을 초기화하려고 하면 워크스페이스가 없다고 오류가 발생한다. 보통 워크스페이스를 사용하지 않으면 default 워크스페이스를 쓰게 되는데 본격적으로 워크스페이스를 쓸 때는 이 default 말고 다른 워크스페이스를 만들어야 한다.

$ terraform workspace new dev
Created and switched to workspace "dev"!

You're now on a new, empty workspace. Workspaces isolate their state,
so if you run "terraform plan" Terraform will not see any existing state
for this configuration.
$ terraform workspace list
* dev

dev 워크스페이스가 만들어졌고 선택된 상태임을 확인할 수 있다. 물론 현재는 하나만 만들었으므로 워크스페이스가 하나밖에 없다.

$ terraform init

Initializing the backend...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

이제 다시 terraform init을 실행하면 정상적으로 초기화할 수 있다.

Terraform Cloud에 가보면 아래처럼 s3-dev라는 워크스페이스가 만들어진 것을 볼 수 있다.

Terraform Cloud 화면에 s3-dev 워크스페이스가 생성되었다

이는 앞에서 prefix로 지정한 s3-에 workspace 이름인 dev가 붙어서 만들어진 이름이다. 필요한 워크스페이스별로 만들어 놓고 바꿔가면서 사용할 수 있다.

2020/09/05 21:01 2020/09/05 21:01