Code Engine에 대한 Terraform 설정

IBM Cloud® 의 Terraform을 사용하면 예측 가능하고 일관된 IBM Cloud 서비스를 생성할 수 있으므로 코드형 인프라( IaC ) 원칙에 따라 복잡한 다계층 클라우드 환경을 빠르게 구축할 수 있습니다. IBM Cloud CLI 또는 API 및 SDK를 사용하는 것과 유사하게 HashiCorp 구성 언어(HCL)를 사용하여 Code Engine 워크로드의 생성, 업데이트 및 삭제를 자동화할 수 있습니다.

관리되는 Terraform on IBM Cloud® 솔루션을 찾고 있습니까? IBM Cloud® Schematics을 사용해 보십시오. Schematics을(를) 사용하면 익숙한 Terraform 스크립트 언어를 사용할 수 있지만 Terraform 명령행 및 IBM Cloud® 제공자 플러그인을 설정하고 유지보수하는 것에 대해서는 걱정할 필요가 없습니다. Schematics은(는) IBM Cloud® 카탈로그에서 쉽게 설치할 수 있는 사전 정의된 Terraform 템플리트도 제공합니다.

Terraform 설치 및 Code Engine에 대한 리소스 구성

Terraform을 사용하여 워크로드를 작성하기 전에 다음 전제조건을 완료했는지 확인하십시오.

  • Code Engine 리소스를 만들고 작업하는 데 필요한 액세스 권한이 있는지 확인하세요.
  • Terraform CLI를 설치하고 Terraform에 대한 IBM Cloud 제공자 플러그인을 구성하십시오. 자세한 정보는 IBM Cloud® 에 대한 튜토리얼을 참조하십시오. 플러그인은 이 태스크를 완료하는 데 사용되는 IBM Cloud API를 요약합니다.
  • 이름이 main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서 HashiCorp 구성 언어를 사용하여 자원을 정의합니다. 자세한 내용은 테라폼 문서를 참조하세요.
  1. main.tf 파일에서 code_engine_project 자원 인수를 사용하여 Code Engine 프로젝트를 작성하십시오.

    data "ibm_resource_group" "resource_group" {
       name = "<your_resource_group_name>"
    }
    
    resource "ibm_code_engine_project" "code_engine_project_instance" {
       name = "<your_project_name>"
       resource_group_id = data.ibm_resource_group.resource_group.id
    }
    
  2. 구성 파일 빌드를 완료한 후 Terraform CLI를 초기화하십시오. 자세한 정보는 작업 디렉토리 초기화를 참조하십시오.

    terraform init
    
  3. main.tf 파일에서 프로젝트를 프로비저닝하십시오. 자세한 정보는 Terraform을 사용하여 인프라 프로비저닝을 참조하십시오.

    1. terraform plan 를 실행하여 제안된 조치를 미리보기 위한 Terraform 실행 플랜을 생성하십시오.

      terraform plan
      
      data.ibm_resource_group.resource_group: Reading...
      data.ibm_resource_group.resource_group: Read complete after 1s [id=<your_resource_group_id>]
      
      Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
         + create
      
      Terraform will perform the following actions:
      
         # ibm_code_engine_project.code_engine_project_instance will be created
         + resource "ibm_code_engine_project" "code_engine_project_instance" {
            + account_id        = (known after apply)
            + created_at        = (known after apply)
            + crn               = (known after apply)
            + href              = (known after apply)
            + id                = (known after apply)
            + name              = "<your_project_name>"
            + project_id        = (known after apply)
            + region            = (known after apply)
            + resource_group_id = "<your_resource_group_id>"
            + resource_type     = (known after apply)
            + status            = (known after apply)
         }
      
      Plan: 1 to add, 0 to change, 0 to destroy.
      
    2. terraform apply 를 실행하여 계획에 정의된 자원을 작성하십시오.

      terraform apply
      
      data.ibm_resource_group.resource_group: Reading...
      data.ibm_resource_group.resource_group: Read complete after 1s [id=<your_resource_group_id>]
      
      Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
         + create
      
      Terraform will perform the following actions:
      
         # ibm_code_engine_project.code_engine_project_instance will be created
         + resource "ibm_code_engine_project" "code_engine_project_instance" {
            + account_id        = (known after apply)
            + created_at        = (known after apply)
            + crn               = (known after apply)
            + href              = (known after apply)
            + id                = (known after apply)
            + name              = "my-project"
            + project_id        = (known after apply)
            + region            = (known after apply)
            + resource_group_id = "5218b5c8c749454b9fc8be28f32e458e"
            + resource_type     = (known after apply)
            + status            = (known after apply)
         }
      
      Plan: 1 to add, 0 to change, 0 to destroy.
      
      Changes to Outputs:
         + ibm_code_engine_project = {
            + account_id        = (known after apply)
            + created_at        = (known after apply)
            + crn               = (known after apply)
            + href              = (known after apply)
            + id                = (known after apply)
            + name              = "my-project"
            + project_id        = (known after apply)
            + region            = (known after apply)
            + resource_group_id = "5218b5c8c749454b9fc8be28f32e458e"
            + resource_type     = (known after apply)
            + status            = (known after apply)
            + timeouts          = null
         }
      
      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
      
      ibm_code_engine_project.code_engine_project_instance: Creating...
      ibm_code_engine_project.code_engine_project_instance: Still creating... [10s elapsed]
      ibm_code_engine_project.code_engine_project_instance: Still creating... [20s elapsed]
      ibm_code_engine_project.code_engine_project_instance: Still creating... [30s elapsed]
      ibm_code_engine_project.code_engine_project_instance: Creation complete after 30s [id=13468527-84sa-619g-gr99-168fe364w98f]
      
      Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
      
      Outputs:
      
      ibm_code_engine_project = {
         "account_id" = "<your_account_id>"
         "created_at" = "2023-03-16T10:44:24.150838188Z"
         "crn" = "crn:v1:bluemix:public:codeengine:eu-de:a/dc5e6392e5d14021846031b83e95f190:13468527-84sa-619g-gr99-168fe364w98f::"
         "href" = "https://api.eu-de.codeengine.cloud.ibm.com/v2/projects/13468527-84sa-619g-gr99-168fe364w98f"
         "id" = "13468527-84sa-619g-gr99-168fe364w98f"
         "name" = "my-project"
         "project_id" = "<your_project_id>"
         "region" = "eu-de"
         "resource_group_id" = "<your_resource_group_id>"
         "resource_type" = "project_v2"
         "status" = "active"
         "timeouts" = null /* object */
      }
      
  4. Code Engine 콘솔의 프로젝트 목록에서 프로젝트를 볼 수 있습니다. 또는 Containers 카테고리를 펼치고 프로젝트 이름을 찾아서 IBM Cloud 리소스 목록에서 프로젝트를 볼 수 있습니다.

다음에 수행할 작업

IBM Cloud에서 Terraform을 사용하여 첫 번째 Code Engine 프로젝트를 작성했으므로 추가 리소스를 작성할 수 있습니다.

자원

데이터 소스

IBM Cloud 및 Terraform에 대한 자세한 정보는 IBM Cloud 제공자를 참조하십시오.