원격 상태 및 작업공간 간 액세스

IBM Cloud® 는 Terraform에 대한 내장된 원격 상태 관리를 제공합니다. Terraform 상태 파일은 실행 사이에 자동으로 보존되며 IBM Cloud® 명령 및 조작으로 액세스할 수 있습니다. IBM Cloud® 원격 상태 관리를 사용하면 동일한 상태 파일에 대한 동시 조작을 방지하는 내장 상태 잠금을 사용하여 팀 작업 및 작업공간 공유 조작을 사용할 수 있습니다.

내장된 작업공간 원격 상태 관리는 여러 Schematics 유스 케이스를 지원합니다.

  • 작업공간 간의 자원 정보 공유입니다. 이를 통해 Schematics 원격 상태 데이터 소스를 사용하는 환경 간에 전달되는 읽기 전용 자원 정보를 사용하여 인프라를 더 작은 컴포넌트로 나눌 수 있습니다. 데이터 소스에 의해 링크된 개별 환경을 사용하면 서로 다른 인프라 요소에 대한 책임을 서로 다른 팀에 위임할 수 있으며 작업공간 간에 정보를 읽기 전용 자원으로 공유할 수 있습니다.
  • 작업공간 및 조치 조작을 조치 와 통합합니다. 작업공간 자원 정보는 수동 호스트 자원 명세 작성 또는 자원 명세 스크립트 사용 없이 Ansible 동적 자원 명세 로 직접 전달될 수 있습니다.

작업공간 상태 및 출력에 액세스

ibm_schematics_outputibm_schematics_state 데이터 소스를 사용하여 계정의 다른 작업공간에서 작업공간에서 관리하는 자원에 대한 정보에 액세스할 수 있습니다.

IBM Cloud® 는 local 기본 제공 Terraform 상태 지원을 사용하며 Terraform 백엔드 지원을 사용하지 않습니다. IBM Cloud® 원격 상태 관리를 사용으로 설정하기 위해 Terraform configs 내에서 추가 구성이 필요하지 않습니다. Schematics 는 Terraform remote_state 데이터 소스를 사용하지 않습니다. 대신 ibm_schematics_output 데이터 소스를 사용하여 정보에 액세스합니다.

ibm_schematics_state 데이터 원본은 remote_state 데이터 원본과 어떻게 다른가요?
remote_state 데이터 소스를 사용하는 경우 워크스페이스에 연결할 백엔드를 구성해야 합니다. ibm_schematics_state 데이터 소스를 사용하면 기본 제공 Schematics 백엔드에 자동으로 액세스하여 워크스페이스 정보에 바로 액세스할 수 있습니다.

다른 워크스페이스의 리소스 정보에 액세스하려면 어떻게 해야 하나요?
remote_state 데이터 소스와 유사하게 Terraform 템플리트에서 출력 값으로 구성한 정보에만 액세스할 수 있습니다. 예를 들어, VPC를 프로비저닝하는 데 사용한 작업공간이 있다고 가정하십시오. VPC ID에 액세스하려면 Terraform 구성 파일에서 ID를 출력 변수로 정의해야 합니다.

ibm_schematics_output 데이터 소스를 사용하려면 다음을 수행하십시오.

  1. 시작하기 튜토리얼의 예에 따라 Schematics 워크스페이스를 만들고 VPC에서 가상 서버를 프로비저닝합니다. 지시사항에 따라 vpc.tf Terraform 구성 파일의 끝부분에 정의된 출력 변수를 검토하십시오.

    워크스페이스 중 하나에서 이미 다른 Terraform 구성 파일을 사용했다면 이 워크스페이스를 연습에 사용할 수 있습니다. 나중에 작업공간 정보에 액세스할 수 있도록 이 예에 설명된 출력 값을 구성 파일에 추가해야 합니다.

    output sshcommand {
        value = "ssh root@ibm_is_floating_ip.fip1.address"
    }
    
    output vpc_id {
    value = ibm_is_vpc.vpc.id
    }
    

    이 예에서는 VPC의 가상 서버 인스턴스에 액세스하기 위한 sshcommandvpc_id 등 두 개의 출력 값이 정의됩니다.

  2. 작성한 VPC 작업공간의 ID를 검색하십시오.

    콘솔을 통해:

    • 작업공간 대시보드 외부 링크 아이콘에서 VPC 작업공간을 선택하십시오.
    • 설정 탭을 선택하십시오.
    • 요약 섹션에서 작업공간 ID를 찾으십시오.

    CLI를 통해:

    • 계정에서 사용 가능한 작업공간을 나열하십시오.
      ibmcloud schematics workspace list
      
    • 명령행 출력의 ID 열에서 작업공간 ID를 찾으십시오.

    Schematics ibmcloud terraform 명령 사용 시 별칭 'terraform'이 더 이상 사용되지 않는다는 경고 및 사용 중단 메시지가 표시됩니다. 명령에 'schematics' 또는 'sch'를 사용합니다.

  3. remotestate.tf 데이터 소스를 사용하여 vpc.tf 파일의 출력 매개변수에 액세스하려면 ibm_schematics_output라는 다른 Terraform 구성 파일을 작성하십시오. 이 파일의 버전 제어를 허용하려면 이 구성 파일을 GitHub 또는 GitLab 저장소에 저장해야 합니다.

    data "ibm_schematics_workspace" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
    }
    
    data "ibm_schematics_output" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
        template_id = data.ibm_schematics_workspace.vpc.runtime_data.0.id
    }
    
    output "output_vars" {
        value = data.ibm_schematics_output.vpc.output_values
    }
    
    output "ssh_command" {
        value = data.ibm_schematics_output.vpc.output_values.sshcommand
    }
    
    output "vpc_id" {
        value = data.ibm_schematics_output.vpc.output_values.vpc_id
    }
    
    구성 파일 구성요소
    아이디어 아이콘 구성 파일 컴포넌트 이해
    data.ibm_schematics_workspace.workspace_id 액세스하려는 출력 값을 정의한 VPC 작업공간의 ID를 입력하십시오. ibm_schematics_output 데이터 소스에서 작업공간의 템플리트 ID를 검색하려면 이 데이터 소스가 필요합니다.
    data.ibm_schematics_output.workspace_id 액세스하려는 출력 값을 정의한 VPC 작업공간의 ID를 입력하십시오.
    data.ibm_schematics_output.template_id 작업공간의 Terraform 템플리트를 참조하려면 data.ibm_schematics_workspace.vpc.runtime_data.0.id을(를) 입력하십시오.
    output.output_vars.value ibm_schematics_output 데이터 소스의 output_values 출력 매개변수를 사용하여 vpc.tf 파일에서 정의한 모든 출력 값에 액세스하려면 Terraform 보간 구문을 사용하십시오. output_values 출력 매개변수는 모든 출력 값을 목록으로 리턴합니다.
    output.sshcomand.valueoutput.vpc_id.value ibm_schematics_output 데이터 소스에 출력 값의 ID를 추가하여 output_values 목록의 특정 값에 액세스할 수 있습니다. 예를 들어, vpc_id에 액세스하려면 data.ibm_schematics_output.vpc.output_values.vpc_id을(를) 사용하기만 하면 됩니다.
  4. 작업공간 작성은 GitHub 또는 GitLab 저장소의 remotestate.tf 파일을 가리킵니다. 대신 로컬 시스템에서 테이프 아카이브 파일(.tar)을 업로드하려면 ibmcloud schematics workspace upload 명령을 사용하십시오.

  5. Schematics에서 Terraform 코드를 실행하십시오. 로그를 검토할 때 출력 섹션에서 VPC 작업공간의 출력 값을 볼 수 있습니다.

    출력 예

    ...
    2020/02/21 19:49:30 Terraform show | Outputs:
    2020/02/21 19:49:30 Terraform show |
    2020/02/21 19:49:30 Terraform show | Output_vars = {
    2020/02/21 19:49:30 Terraform show |   sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show |   vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a
    2020/02/21 19:49:30 Terraform show | }
    2020/02/21 19:49:30 Terraform show | sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show | vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a