원격 상태 및 작업공간 간 액세스
IBM Cloud® 는 Terraform에 대한 내장된 원격 상태 관리를 제공합니다. Terraform 상태 파일은 실행 사이에 자동으로 보존되며 IBM Cloud® 명령 및 조작으로 액세스할 수 있습니다. IBM Cloud® 원격 상태 관리를 사용하면 동일한 상태 파일에 대한 동시 조작을 방지하는 내장 상태 잠금을 사용하여 팀 작업 및 작업공간 공유 조작을 사용할 수 있습니다.
내장된 작업공간 원격 상태 관리는 여러 Schematics 유스 케이스를 지원합니다.
- 작업공간 간의 자원 정보 공유입니다. 이를 통해 Schematics 원격 상태 데이터 소스를 사용하는 환경 간에 전달되는 읽기 전용 자원 정보를 사용하여 인프라를 더 작은 컴포넌트로 나눌 수 있습니다. 데이터 소스에 의해 링크된 개별 환경을 사용하면 서로 다른 인프라 요소에 대한 책임을 서로 다른 팀에 위임할 수 있으며 작업공간 간에 정보를 읽기 전용 자원으로 공유할 수 있습니다.
- 작업공간 및 조치 조작을 조치 와 통합합니다. 작업공간 자원 정보는 수동 호스트 자원 명세 작성 또는 자원 명세 스크립트 사용 없이 Ansible 동적 자원 명세 로 직접 전달될 수 있습니다.
작업공간 상태 및 출력에 액세스
ibm_schematics_output 및 ibm_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 데이터 소스를 사용하려면 다음을 수행하십시오.
-
시작하기 튜토리얼의 예에 따라 Schematics 워크스페이스를 만들고 VPC에서 가상 서버를 프로비저닝합니다. 지시사항에 따라
vpc.tfTerraform 구성 파일의 끝부분에 정의된 출력 변수를 검토하십시오.워크스페이스 중 하나에서 이미 다른 Terraform 구성 파일을 사용했다면 이 워크스페이스를 연습에 사용할 수 있습니다. 나중에 작업공간 정보에 액세스할 수 있도록 이 예에 설명된 출력 값을 구성 파일에 추가해야 합니다.
output sshcommand { value = "ssh root@ibm_is_floating_ip.fip1.address" } output vpc_id { value = ibm_is_vpc.vpc.id }이 예에서는 VPC의 가상 서버 인스턴스에 액세스하기 위한
sshcommand및vpc_id등 두 개의 출력 값이 정의됩니다. -
작성한 VPC 작업공간의 ID를 검색하십시오.
콘솔을 통해:
- 작업공간 대시보드
에서 VPC 작업공간을 선택하십시오.
- 설정 탭을 선택하십시오.
- 요약 섹션에서 작업공간 ID를 찾으십시오.
CLI를 통해:
- 계정에서 사용 가능한 작업공간을 나열하십시오.
ibmcloud schematics workspace list - 명령행 출력의 ID 열에서 작업공간 ID를 찾으십시오.
Schematics
ibmcloud terraform명령 사용 시 별칭 'terraform'이 더 이상 사용되지 않는다는 경고 및 사용 중단 메시지가 표시됩니다. 명령에 'schematics' 또는 'sch'를 사용합니다. - 작업공간 대시보드
-
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.valueibm_schematics_output데이터 소스의output_values출력 매개변수를 사용하여vpc.tf파일에서 정의한 모든 출력 값에 액세스하려면 Terraform 보간 구문을 사용하십시오.output_values출력 매개변수는 모든 출력 값을 목록으로 리턴합니다.output.sshcomand.value및output.vpc_id.valueibm_schematics_output데이터 소스에 출력 값의 ID를 추가하여output_values목록의 특정 값에 액세스할 수 있습니다. 예를 들어,vpc_id에 액세스하려면data.ibm_schematics_output.vpc.output_values.vpc_id을(를) 사용하기만 하면 됩니다. -
작업공간 작성은 GitHub 또는 GitLab 저장소의
remotestate.tf파일을 가리킵니다. 대신 로컬 시스템에서 테이프 아카이브 파일(.tar)을 업로드하려면ibmcloud schematics workspace upload명령을 사용하십시오. -
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