仮想マシン(VM)イメージの構築

このページは、パートナー プロダクトを Compute Engine で実行するための公開マシンイメージの作成について説明します。

イメージには、インスタンスの起動に必要な、ブートローダー、オペレーティング システム、ルートファイル システムが含まれます。プロダクトのアプリとサービスのセットでイメージを構成できます。イメージは顧客がクラウドで仮想マシン(VM)インスタンスを起動するために使用されます。

最初は開発プロジェクトでイメージを作成し、担当の Google パートナー エンジニアによる確認が済んでからパブリック プロジェクトに移すことをおすすめします。

始める前に

  1. Google Cloud SDK をダウンロードします。

ベース プロダクト VM を作成する

Cloud Marketplace 用のカスタム マシンイメージを作成するには、次の手順を完了する必要があります(以降のセクションで説明します)。

  • Google でサポートされているベース公開イメージを使用して VM を作成し、アプリ固有のパッケージと構成をインストールします。x86 マシンタイプで実行されるイメージを選択します。
  • 顧客にサポートを提供する場合は、アプリユーザー認証情報を取得するスクリプトをインストールします。

ライセンスが適用された VM イメージの作成

  1. gcloud を使用して、Google Cloud CLI のデフォルトを設定します。

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. ソフトウェアのインストールに使用するプライマリ インスタンスを作成してから、Cloud Marketplace で使用するイメージに変換します。インスタンスの作成の詳細については、インスタンスの作成と起動をご覧ください。

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. ソフトウェアをインストールしてカスタマイズします。承認認証情報を作成するスクリプトなど、必要な起動スクリプトを含めます。

    安全なランダム パスワードを使用して承認認証情報を作成するには、次のセクションの承認認証情報の作成の手順に沿って操作します。

    プライマリー インスタンスの作成とカスタマイズが完了したら、VM イメージの作成に必要なディスクを準備します。

  4. 作業ディスクをクリーンアップします。また、VM から直接 VM イメージを作成すると、ユーザー ディレクトリと SSH 認証鍵に顧客の VM に転送されるため、VM イメージの作成時に入力ディスクをクリーンアップする必要があります。

    ディスクをクリーンアップする手順は次のとおりです。

    1. Compute Engine の [VM インスタンス] メニューで、クリーンアップするインスタンスの名前をクリックし、[編集] をクリックします。

    2. 下にスクロールして、[インスタンスを削除する際にブートディスクを削除する] チェックボックスをオフにして、[保存] をクリックします。このディスクを使用してイメージを作成します。

    3. ディスクを保持したまま VM を削除します。削除を確認するよう求められます。[ブートディスクの削除も行います] は選択しないでください。

    4. 次に、新しい VM インスタンスを作成する必要があります。[管理ディスクネットワーキングSSH 認証鍵] のオプションを展開します。

    5. [ディスク] で、前のインスタンスのディスクを追加のデータディスクとして接続します。[インスタンスを削除したときの動作] で [ディスクを維持] が選択されていることを確認します。

      これで、インスタンスに SSH 接続して、ソフトウェアのインストール プロセスで作成されたホーム ディレクトリやその他の一時ファイルを削除できるようになりました。 データディスクにアクセスするには先にマウントする必要があります。ディスクのマウントの詳細については、永続ディスクの追加またはサイズ変更をご覧ください。

    6. 完了したら、更新したデータディスクを保持したまま、インスタンスをシャットダウンして削除します。これで、次の手順に沿って VM イメージを作成できるようになりました。

  5. 次の手順に沿って、Producer Portal で VM プロダクトのライセンス名を取得します。

    1. Google Cloud Console で Producer Portal を開きます。

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      YOUR_PROJECT_ID を、開発プロジェクトまたはパブリック プロジェクトの ID に置き換えます。最初は開発プロジェクトでイメージを作成し、担当の Google パートナー エンジニアによる確認が済んでからパブリック プロジェクトに移すことをおすすめします。

    2. プロダクトの名前をクリックします。

    3. [Deployment Package] セクションに移動します。[VM ライセンス] で名前をメモします。このライセンス名は、次の手順でイメージを作成するときに使用します。

  6. 次の gcloud コマンドを実行して、ライセンスが適用されたイメージを作成します。

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses projects/PUBLIC_PROJECT_NAME/global/licenses/LICENSE_NAME \
     --description ADD_DESCRIPTION
    

    以下を置き換えます。

    • CREATE_IMAGE_NAME: who-vmOS-image-date 形式のイメージの名前。プロダクトのイメージを更新するたびに、新しい一意の名前を使用する必要があります。
    • PUBLIC_PROJECT_NAME: Cloud Marketplace の公開プロジェクトのプロジェクト ID。
    • LICENSE_NAME: 前の手順でメモした VM プロダクトのライセンス名。
    • DEV_PROJECT_NAME: Cloud Marketplace の開発とテストのために作成したプロジェクトのプロジェクト ID。
    • SOURCE_DISK_ZONE: ソースディスクのゾーン。
    • SOURCE_DISK_NAME: ソースディスクの名前。
    • ADD_DESCRIPTION: 作成するイメージのテキスト説明(省略可)。

承認認証情報を作成する

プロダクトが基本的なファイアウォール ルールを備えた単一の VM インスタンスのシンプルなデプロイである場合、デプロイ パッケージを直接構成するときに、安全なランダム パスワードを自動的に含めることができます。

ほとんどのユースケースで推奨されているオープンソース mpdev ツールを使用してデプロイ パッケージを作成する場合は、mpdev を使用して自動的に複数の安全なランダム パスワードを追加できます。

承認認証情報を作成する手順については、デプロイ パッケージの作成をご覧ください。

プロダクトがデプロイされた後で、作成したパスワードの値を取得するには、VM インスタンス内から次のコマンドを使用します。

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

VM イメージをテストする

新しく作成したイメージで VM インスタンスを作成し、機能を確認します。

また、ライセンス ID を確認するために、インスタンスに SSH 接続して、有効なライセンスが添付されていることを確認します。

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Python 2.6 以上がインストールされていることを確認します。

python -V

次のパッケージがインストールされていることを確認します。

gcloud --version
gsutil --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

独自のインスタンスを除いて、インスタンスに他のユーザー ディレクトリがインストールされていないこと、および独自のもの以外のユーザー ディレクトリと認証情報が残っていないことを確認してください。