仮想アプライアンスからのマシンイメージのインポート

マシンイメージを使用すると、Compute Engine で実行される VM インスタンス用に、すべての構成、メタデータ、権限、データを 1 つ以上のディスクから格納できます。マシンイメージを使用するタイミングと方法については、マシンイメージをご覧ください。

このドキュメントでは、仮想アプライアンスからマシンイメージをインポートする手順を説明します。

始める前に

制限事項

  • マシンイメージは、プロジェクト間で共有できます。ただし、共有 VPC ネットワークはサポートされていません。
  • この機能は、VPC Service Controls で保護されているプロジェクトではサポートされていません。

サポートされているオペレーティング システム

オペレーティング システムのサポートについては、オペレーティング システムの詳細をご覧ください。

Cloud Build API を有効にする

ほとんどの場合、gcloud beta compute machine-images import はこれらの権限を Cloud Build サービス アカウントに付与しようとします。ただし、これらの権限を手動で付与して、必要な権限が有効になるようにすることもできます。

Console

  1. Cloud Build API を有効にします。

    Cloud Build API を有効にする

    Console から Cloud Build API を有効にすると、Compute Engine は Cloud Build サービス アカウントに次のロールを付与し、Cloud Build サービスが Compute Engine にインスタンスをインポートできるようにします。

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    インポート ツールでは、デフォルトの Compute Engine サービス アカウントも使用されます。デフォルトで、Compute Engine サービス アカウントには IAM プロジェクト編集者のロールが付与されています。このロールを削除すると、インポート プロセスが失敗することがあります。役割をサービス アカウントに再び追加するには、アクセス権の付与をご覧ください。Compute Engine のデフォルトのサービス アカウントについて詳しくは、Compute Engine のデフォルトのサービス アカウントをご覧ください。

gcloud

gcloud コマンドライン ツールを使用して Cloud Build サービスを設定する手順は次のとおりです。

  1. Cloud Build を有効にします。

    gcloud services enable cloudbuild.googleapis.com

    インポート ツールでは、デフォルトの Compute Engine サービス アカウントも使用されます。デフォルトで、Compute Engine サービス アカウントには IAM プロジェクト編集者のロールが付与されています。このロールを削除すると、インポート プロセスが失敗することがあります。役割をサービス アカウントに再び追加するには、アクセス権の付与をご覧ください。Compute Engine のデフォルトのサービス アカウントについて詳しくは、Compute Engine のデフォルトのサービス アカウントをご覧ください。

  2. Cloud Build API のサービス アカウントに compute.admin 役割を追加します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/compute.admin
    
  3. Cloud Build API のサービス アカウントに iam.serviceAccountUser 役割を追加します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountUser
    
  4. Cloud Build API のサービス アカウントに iam.serviceAccountTokenCreator 役割を追加します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountTokenCreator
    

    以下を置き換えます。

マシンイメージのインポート

仮想アプライアンスからマシンイメージをインポートするには、gcloud コマンドライン ツールまたは Cloud Build API を使用します。

gcloud

gcloud beta compute machine-images import コマンドを使用して、仮想アプライアンスからマシンイメージをインポートします。

gcloud beta compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

以下を置き換えます。

  • MACHINE_IMAGE_NAME: インポートするマシンイメージの名前。
  • SOURCE_URI: Cloud Storage 上の OVA ファイルまたは OVF ファイルへのパス。
  • OS: OVA ファイルのオペレーティング システム。このフラグはデフォルトで省略可能ですが、必要になる場合もあります。このフラグを指定することをおすすめします。

たとえば、次の gcloud コマンドを使用すると、gs://my-bucket ディレクトリに保存されていて、centos-7 を実行する my-ova というソース OVA ファイルから my-machine-image というマシンイメージをインポートできます。

gcloud beta compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

API

  1. 仮想アプライアンスを Cloud Storage にアップロードします。

  2. API で、Cloud Build API に対する POST リクエストを作成します。

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    以下を置き換えます。

    • PROJECT_ID: OVA ファイルのインポート先にするプロジェクトのプロジェクト ID。
    • MACHINE_IMAGE_NAME: インポートするマシンイメージの名前。例: my-machine-image
    • SOURCE_URI: OVA ファイルの URI、または Cloud Storage に保存されている OVF パッケージを含むディレクトリ。例: gs://my-bucket/my-instance.ova
    • OS: OVA ファイルのオペレーティング システム。例: ubuntu-1604。このフラグはデフォルトで省略可能ですが、必要になる場合もあります。このフラグを指定することをおすすめします。

    さらに args 値を指定できます。「Compute Engine OVF import GitHub」ページのオプション フラグ セクションをご覧ください。

OVF オーバーライドによるマシンイメージのインポート

カスタム CPU とメモリ

gcloud

OVF ファイルで指定された CPU またはメモリ構成をオーバーライドするには、gcloud コマンドライン ツールのステップに従い、マシンイメージをインポートし、--custom-cpu フラグと --custom-memory フラグを指定します。

my-machine-image という名前のマシンイメージには、OVF ファイルの設定に適用される次のオーバーライドがあります。

  • オペレーティング システム: Ubuntu 1404
  • CPU: 2 CPUs
  • メモリ: 2048 MB

これらのオーバーライドを使用して my-machine-image をインポートするには、次のコマンドを実行します。

gcloud beta compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

API

OVF ファイルで指定された CPU またはメモリ構成をオーバーライドするには、Compute Engine API のステップに従い、マシンイメージをインポートし、-machine-type 引数を指定します。この -machine-type は、使用する事前定義またはカスタム マシンタイプです。

my-machine-image という名前のマシンイメージには、OVF ファイルの設定に適用される次のオーバーライドがあります。

  • オペレーティング システム: Ubuntu 1404
  • CPU: 2 CPUs
  • メモリ: 2048 MB

これらのオーバーライドを使用して my-machine-image をインポートするには、Compute Engine API に次のリクエストを行います。

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

PROJECT_ID を実際のプロジェクト ID に置き換えます。

カスタム ネットワーク

gcloud

カスタム ネットワークを設定するには、gcloud コマンドライン ツールの手順に沿ってマシンイメージをインポートし、--network フラグを指定します。ネットワークがカスタム サブネット モードで構成されている場合は、--subnet フラグと --zone フラグも指定する必要があります。

my-machine-image という名前のマシンイメージには、OVF ファイルの設定に適用される次のオーバーライドがあります。

  • オペレーティング システム: Ubuntu 1404
  • ネットワーク: custom-vpc-network
  • サブネット: company-vpc-us-east1-c
  • ゾーン: us-east1-c

これらのオーバーライドを使用して my-machine-image をインポートするには、次のサンプル コマンドを実行します。

gcloud beta compute machine-images import my-machine-image \
    --os ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network custom-vpc-network \
    --subnet company-vpc-us-east1-c \
    --zone us-east1-c

API

カスタム ネットワークを使用するには、Compute Engine API の手順に沿ってマシンイメージをインポートし、-network 引数を指定します。ネットワークがカスタム サブネット モードで構成されている場合は、-subnet 引数と -zone 引数も指定する必要があります。

my-machine-image という名前のマシンイメージには、OVF ファイルの設定に適用される次のオーバーライドがあります。

  • オペレーティング システム: Ubuntu 1404
  • ネットワーク: custom-vpc-network
  • サブネット: company-vpc-us-east1-c
  • ゾーン: us-central1-c

これらのオーバーライドを使用して my-machine-image をインポートするには、Compute Engine API に次のリクエストを行います。

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

PROJECT_ID を実際のプロジェクト ID に置き換えます。

外部 IP を許可しないネットワーク内にマシンイメージをインポートする

外部 IP アドレスを許可しないネットワークを使用してマシンイメージをインポートするには、次の手順を行います。

  1. 仮想アプライアンスを Cloud Storage に追加します。

  2. インポート プロセスでは、マシンイメージのオペレーティング システムにパッケージ マネージャーをインストールする必要があります。これらのパッケージ マネージャーでは、Google Cloud の外部にあるパッケージ リポジトリにリクエストを送信する必要がある場合があります。これらの更新へのアクセスを許可するには、Cloud NAT を構成する必要があります。詳細については、Cloud Router を使用した NAT 構成の作成をご覧ください。

  3. 限定公開の Google アクセスを構成します。詳細については、限定公開の Google アクセスの構成をご覧ください。

  4. gcloud コマンドライン ツールまたは Cloud Build API を使用してマシンイメージをインポートします。

    仮想アプライアンスからマシンイメージをインポートすると、一時的な VM がプロジェクトに作成されます。これらの一時的な VM に外部 IP アドレスが割り当てられないようにするには、追加のフラグまたは引数を指定する必要があります。

    必須フラグや引数の詳細については、次のタブをクリックしてください。

gcloud

--no-address フラグを指定して gcloud beta compute machine-images import コマンドを使用します。

gcloud beta compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

以下を置き換えます。

  • MACHINE_IMAGE_NAME: インポートするマシンイメージの名前。
  • SOURCE_URI: Cloud Storage 上にある OVA または OVF ファイルの URI。例: gs://my-bucket/Ubuntu.ova
  • OS: OVA ファイルのオペレーティング システム。このフラグはデフォルトで省略可能ですが、必要になる場合もあります。このフラグを指定することをおすすめします。サポートされている値の一覧については、gcloud beta compute machine-images import コマンドの --os フラグ オプションをご覧ください。
  • ZONE: マシンイメージをインポートするゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。

API

Cloud Build API を使用して、-no-external-ip 引数を指定します。

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

以下を置き換えます。

  • PROJECT_ID: マシンイメージをインポートするプロジェクトのプロジェクト ID。
  • MACHINE_IMAGE_NAME: インポートするマシンイメージの名前。例: my-machine-image
  • SOURCE_URI: Cloud Storage に保管されている OVA ファイルの URI例: gs://my-bucket/my-machine.ova
  • OS: OVA ファイルのオペレーティング システム(ubuntu-1604 など)。このフラグはデフォルトではオプションですが、必要になる場合もあります。このフラグを指定することをおすすめします。サポートされている値の一覧については、gcloud compute instances import コマンドの --os フラグ オプションをご覧ください。
  • ZONE: マシンイメージをインポートするゾーン

次のステップ