Terraform Cloud의 Workspace 만들기

Terraform Cloud의 Workspace 만들기


저번에 테라폼클라우드에 계정을 냈는데 워크스페이스를 만들자.
어쨌든 지금부터 화면에서 푸치푸치를 만들어도 되는데 오랜만에 왔는데 이것도 테라form으로 만들어보자.

Terraform Cloud Provider 사용


Terraform Enterprise Provider에 소개tfe가 있다.
Terraform Cloud를 관리하는 Terraform Provider입니다.
한 마디로 하면, provier의 정의는 다음과 같다.
provider tfe {}
옵션도 지정할 수 있지만 환경 변수로 전달할 수 있기 때문에 이번에는 이런 식으로
  • token
  • 다음에 생성되는 영패 지정

  • 환경 변수TFE_TOKEN를 통해 지정할 수 있음
  • hostname
  • 기본값app.terraform.io이므로 일반적으로 사용하는 경우에는 특별히 지정할 필요가 없음

  • 환경 변수TFE_HOSTNAME를 통해 지정할 수 있음
  • Terraform Cloud 토큰 가져오기


    Terraform Cloud의 Settings를 열고 Teams 설정에서 팀 토큰을 생성합니다.

    생성된 토큰은 Warning에서도 한 번뿐입니다.
    잃어버리면 다시 만들어주세요.

    Terraform으로 Workspace 만들기


    우선 간단한 샘플로 다음과 같이 준비하겠습니다.
    terraform cloud에서testworkspace를 만드는 코드입니다.
    provider tfe {}
    
    resource tfe_workspace test {
      name         = "test"
      organization = "mominosin"
    }
    
    최초 초기화 후 TFE위에서 받은 영패를 토키오 플랜에게 건네보게.
    ❯ terraform init
    ❯ TFE_TOKEN=<TOKEN> terraform plan
    
    플랜의 결과는 다음과 같다.
    ❯ TFE_TOKEN= terraform plan
    Refreshing Terraform state in-memory prior to plan...
    The refreshed state will be used to calculate this plan, but will not be
    persisted to local or remote state storage.
    
    
    ------------------------------------------------------------------------
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # tfe_workspace.test will be created
      + resource "tfe_workspace" "test" {
          + auto_apply            = false
          + external_id           = (known after apply)
          + file_triggers_enabled = true
          + id                    = (known after apply)
          + name                  = "test"
          + operations            = true
          + organization          = "mominosin"
          + queue_all_runs        = true
          + terraform_version     = (known after apply)
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    ------------------------------------------------------------------------
    
    Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    can't guarantee that exactly these actions will be performed if
    "terraform apply" is subsequently run.
    
    플랜에 문제가 없으면 apply.
    ❯ TFE_TOKEN= terraform apply
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # tfe_workspace.test will be created
      + resource "tfe_workspace" "test" {
          + auto_apply            = false
          + external_id           = (known after apply)
          + file_triggers_enabled = true
          + id                    = (known after apply)
          + name                  = "test"
          + operations            = true
          + organization          = "mominosin"
          + queue_all_runs        = true
          + terraform_version     = (known after apply)
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    tfe_workspace.test: Creating...
    tfe_workspace.test: Creation complete after 0s [id=ws-KcNddjr6WWs4rEmP]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    
    Resources: 1 added라서 워크스페이스를 하나 만든 것 같아요.
    Terraform Cloud에서 확인하면 test workspace가 생성됩니다.

    테스트 워크스페이스를 열고 워크스페이스에state 파일로 지정한 방법을 저장합니다.

    토큰을 전달하지 않을 때


    토큰을 교부하지 않으면 오류가 발생할 수 있습니다.
    ❯ terraform plan
    Refreshing Terraform state in-memory prior to plan...
    The refreshed state will be used to calculate this plan, but will not be
    persisted to local or remote state storage.
    
    
    ------------------------------------------------------------------------
    
    Error: required token could not be found
    
      on workspace.tf line 1, in provider "tfe":
       1: provider tfe {}
    

    최후


    이번에는 짧았지만 테라form Cloud에 테라form으로 워크스페이스를 만드는 방법을 써봤어요.
    다음에는 워크스페이스에서 테라form으로 git와 환경 변수 등의 설정을 계속 제작할 계획이다.
    이번에 사용한 코드는 terraform-cloud-workspaces / pre_workspace입니다. 관심 있으면 보세요.

    좋은 웹페이지 즐겨찾기