VM용 Terraform 배포 모듈 만들기

이 페이지에서는 가상 머신 (VM)과 VM의 Terraform 배포 모듈을 만드는 방법을 설명합니다.

라이선스가 부여된 VM 이미지 만들기

  1. 개발 VM에 영향을 주지 않으려면 다음 gcloud 명령어를 실행하여 VM에 사용된 디스크의 사본을 만듭니다.
    gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
  2. VM의 클론을 만듭니다. 자세한 내용은 기존 VM과 유사한 VM 만들기를 참고하세요.
  3. 고급 옵션 섹션에서 클론된 디스크를 연결합니다.
  4. VM을 만듭니다.
  5. 이 VM에 서버가 실행 중인지 확인합니다. 시작 스크립트는 VM이 실행 중인지 확인합니다.
  6. Docker에서 커넥터 서비스를 중지하고 삭제합니다.
  7. 홈 디렉터리와 서버 실행에 필요하지 않은 다른 파일을 삭제합니다. 동일한 디스크가 VM 이미지를 만드는 데 사용되며 나중에 고객이 액세스할 수 있습니다. 이 VM에는 서비스를 실행하는 데 필요한 라이브러리만 있어야 합니다.
  8. VM을 수정하고 삭제 규칙을 디스크 유지로 선택합니다.
  9. 이 VM을 삭제합니다.
  10. 라이선스가 있는 이미지를 만들려면 Producer Portal에서 라이선스를 가져옵니다. Producer Portal을 방문합니다.
  11. 새 가상 머신 제품을 만듭니다. 배포 패키지 섹션으로 이동하여 VM 라이선스를 복사합니다.
  12. 라이선스가 있는 VM 이미지를 만들려면 다음 명령어를 실행합니다.
  13. gcloud compute images create VM_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/ZONE/disks/SOURCE_VM_DISK \
     --licenses LICENSE \
     --description VM_IMAGE_DESCRIPTION

    자세한 내용은 VM 빌드를 참고하세요.

terraform 배포 모듈 만들기

Marketplace는 Marketplace에 VM 이미지를 배포하기 위한 Terraform 모듈을 생성하는 Autogen 도구를 제공합니다.

이 도구는 자동 생성 프로토 사양을 사용하여 배포를 생성합니다. 자세한 내용은 구성 예시를 참고하세요.

  1. 솔루션 세부정보를 추가합니다.
  2. solutionInfo:
      name: 
      packagedSoftwareGroups:
        - type: SOFTWARE_GROUP_OS
          components:
            - name: Ubuntu
              version: 16.04 LTS
        - components:
            - name: Apache
              version: 2.4.23
  3. 커넥터의 경우 VM이 포함된 모듈을 만듭니다. 공개 프로젝트에서 이미지의 프로젝트 이름, VM 이미지 이름, 라벨을 입력합니다.
  4. 최소 CPU 2개, RAM 8GB로 n2d-standard-2를 기본 머신 유형으로 사용합니다. N2d-standard는 중간 트래픽 웹 서버에 적합합니다. 기본 VM은 코어 2개로 설정할 수 있습니다. 고객이 더 많은 트래픽을 예상하는 경우 마켓플레이스에서 VM을 만들 때 이를 변경할 수 있습니다. 다양한 머신 유형의 가격 책정에 대한 자세한 내용은 VM 인스턴스 가격 책정을 참고하세요.
        machineType:
          # Check http://cloud.google.com/compute/docs/machine-types for all available types
          defaultMachineType:
            gceMachineType: n2d-standard-2
          # Minimum CPU and memory constraints for the machine type to run your solution properly
          minimum:
            cpu: 2
            ramGb: 8
  5. 기본 디스크 유형으로 pd-standard를 사용합니다.
        bootDisk:
          diskType:
            defaultType: pd-standard
  6. 자동 생성 구성에 시작 스크립트를 추가합니다. 시작 스크립트를 문자열로 변환하고 bashScriptContent에 추가합니다.
    gceStartupScript:
       bashScriptContent: 
  7. VM 생성 중에 고객으로부터 입력으로 가져올 입력란을 정의합니다.
        deployInput:
          sections:
            # The place int he Deployment Manager config that this section will appear. More details in deployment_package_autogen_spec.proto
            - placement: CUSTOM_TOP
              name: CONNECTOR_SETTINGS
              title: Connectors settings
              description: Connectors settings
              tooltip: Setting with which connector VM will be running
              # List of input fields that this section has
              fields:
                - required: false
                  name: TEST_DATA
                  title: Test Data
                  description: Test data
                  tooltip: random data for testing
                  string_box: {}
                - required: false
                  name: PORT
                  title: Port to run service
                  tooltip: Port to run connector service
                  string_box: {}
                - required: false
                  name: LOG_LEVEL
                  title: Log level
                  description: Log level for the web service. Allowed values are DEBUG, INFO, WARNING, ERROR. Default is INFO
                  string_box: {}

    게재위치는 CUSTOM_TOP으로, 이름은 CONNECTOR_SETTINGS로 유지합니다.

    필드와 필드에 필요한 입력 유형을 정의합니다. 이 예에서는 Marketplace 커넥터의 고객에게 테스트 데이터서비스를 실행할 포트 필드가 표시됩니다.

  8. Compute Engine 메타데이터 항목을 정의합니다. VM 메타데이터를 정의하는 동안 입력란의 이름을 메타데이터 키에 매핑합니다.
        gce_metadata_items:
          - key: CONNECTOR_ENV_PORT
            value_from_deploy_input_field: PORT
          - key: CONNECTOR_ENV_TEST_DATA
            value_from_deploy_input_field: TEST_DATA
    - key: CONNECTOR_ENV_LOG_LEVEL
            value_from_deploy_input_field: LOG_LEVEL
  9. 배포 후 고객에게 표시할 단계 세부정보를 추가합니다.
        postDeploy:
          # List of suggested action items for users, after deployment is successful
          actionItems:
            - heading: Create the Private service attachment
              description: Now the connector service is running on the VM, please create the PSC service attachment to create the connection. Follow https://cloud.google.com/integration-connectors/docs/configure-psc for the detailed guide.
            - heading: Create the connection
              description: After creating the connectors endpoint attachment, use the endpoint attachment to create a connection to the partner connector.
  10. 자동 생성을 설정하려면 다음 명령어를 실행합니다.
    alias autogen='docker run \
      --rm \
      --workdir /mounted \
      --mount type=bind,source="$(pwd)",target=/mounted \
      --user $(id -u):$(id -g) \
      gcr.io/cloud-Marketplace-tools/dm/autogen'
    
    autogen --help
  11. terraform 모듈을 생성하려면 다음 명령어를 실행합니다.
    mkdir solution_folder
    
    autogen \
      --input_type YAML \
      --single_input example-config/solution.yaml \
      --output_type PACKAGE \
      --output solution_folder

    solution_folder에는 terraform 모듈이 포함되어 있습니다. 이 모듈은 Marketplace에 제품을 게시하는 동안 사용됩니다.

다음 단계