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 にアクセスします。
  11. 新しい仮想マシン プロダクトを作成します。[Deployment パッケージ] セクションに移動し、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 ツールが用意されています。

このツールは、Autogen proto 定義を使用してデプロイメントを生成します。詳細については、構成の例をご覧ください。

  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. デフォルトのマシンタイプとして n2d-standard-2 を使用し、最小 CPU を 2、RAM を 8 GB にします。N2d-standard は、中程度のトラフィック量のウェブサーバーに最適です。デフォルトの VM は 2 コアに設定できます。トラフィックが増加することが見込まれる場合は、Marketplace から 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. 起動スクリプトを autogen 構成に追加します。起動スクリプトを文字列に変換して、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 コネクタのお客様には [Test Data] フィールドと [Port to run service] フィールドが表示されます。

  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. autogen を設定するには、次のコマンドを実行します。
    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 で商品を公開する際に使用します。

次のステップ