必要なソフトウェアと構成を備えた仮想ディスク(ゴールデン ディスクまたはゴールデン イメージと呼ばれることもあります)がオンプレミス環境にある場合、その仮想ディスクを Compute Engine にインポートし、そのイメージを使用して仮想マシンを作成することによって、時間を節約できます。インポート ツールは、VMDK や VHD などのほとんどの仮想ディスク ファイル形式をサポートしています。
Compute Engine からディスクをエクスポートした場合、ディスクからイメージを作成できます。
複数の仮想マシン(VM)を移行するための自動システムを作成する方法については、Compute Engine への VM の移行をご覧ください。
始める前に
- イメージをインポートするプロジェクトのために定義された信頼できるイメージのポリシーがある場合は、パブリッシャーの許可リストに
projects/compute-image-import
とprojects/compute-image-tools
を追加します。 - イメージをインポートする前に要件を満たす方法については、VM イメージのインポートとエクスポートの前提条件をご覧ください。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
RHEL を実行する仮想ディスクをインポートする場合は、インポートする前に仮想ディスクに python-boto パッケージがインストールされている場合にのみ、BYOL(お客様所有ライセンスの使用)がサポートされます。
仮想ディスク上のオペレーティング システムが ACPI をサポートしている必要があります。
この機能は、VPC Service Controls で保護されているプロジェクトではサポートされていません。これらの環境については、ブートディスクの手動インポートをご覧ください。
イメージ インポート ツールを使用して Arm イメージをインポートすることはできません。Arm イメージをインポートするには、ブートディスクを手動でインポートするで説明されている手順に沿って操作します。
Compute Engine では、ソフトウェアで暗号化されたディスクは、鍵なしで読み取ることができないため、インポートはサポートされていません。たとえば、BitLocker ドライブの暗号化を使用する Windows 10 以降のイメージはインポートできません。
Linux の仮想ディスクは、ブートローダーとして
grub
を使用する必要があります。Linux 仮想ディスクは、カスタム イメージと同じ要件を満たしている必要があります。これには、Virtio-SCSI ストレージ コントローラ デバイスのサポートも含まれます。
Windows の仮想ディスクにインストールする場合は、Carbon Black の Cb Protection などのアプリケーション許可リスト ソフトウェアによってインポート プロセスが失敗する可能性があります。インポートする前に、このようなソフトウェアをアンインストールすることが必要になる場合があります。
Windows ベースの VM では、Microsoft KM-TEST Loopback Adapter がメタデータ サーバーへのネットワーク アクセスを阻止します。インポートする前にこれを無効にするか削除する必要があります。
- Google Cloud コンソールで、仮想ディスク ファイルを Cloud Storage にアップロードします。
[イメージの作成] ページに移動します。
イメージの名前を指定します。
[ソース] で、[仮想ディスク(VMDK、VHD)] を選択します。
Cloud Build サービス アカウントを選択します。デフォルトのサービス アカウントを使用することも、カスタム サービス アカウントを選択することもできます。
- イメージをインポートする権限がないサービス アカウントを選択すると、必要な権限を付与するためのオプションを提示するメッセージが表示されます。[付与] をクリックして、必要な権限をサービス アカウントに付与します。
[ログの場所] に値を入力します。選択したサービス アカウントが Cloud Build サービス アカウントの場合は、ログの場所を指定する必要はありません。その他すべてのサービス アカウント(デフォルトの Compute Engine サービス アカウントを含む)の場合は、ログの場所を指定する必要があります。
Cloud Storage ファイルのストレージの場所を参照するか、手動で入力します。
インポートされたディスクで使用できるオペレーティング システムを選択します。次のように変更することもできます。
ゲスト パッケージをインストールすることを選択できます。ゲスト環境をインストールすることをおすすめします。ゲスト環境について詳しくは、ゲスト環境をご覧ください。
Windows または Red Hat Enterprise Linux(RHEL)オペレーティング システムの場合、ライセンス オプションも選択できます。Compute Engine にライセンスの提供を許可することも、お客様所有ライセンスの使用も可能です。Windows での BYOL について詳しくは、お客様所有ライセンスの使用をご覧ください。
(オプション)イメージの追加プロパティを指定します。たとえば、このイメージをイメージ ファミリーの一部として管理できます。
[作成] をクリックしてイメージをインポートします。
IMAGE_NAME
: 対象イメージの名前。SOURCE_FILE
: 仮想ディスク ファイル。このファイルは、ローカル ファイルまたは Cloud Storage に保存されているファイルでもかまいません。仮想ディスクがローカル ファイルの場合は、絶対パスまたは相対パスを使用できます。仮想ディスク ファイルがすでに Cloud Storage に保存されている場合は、インポート プロセスに使用されるプロジェクトの Cloud Storage バケットにそのファイルが存在する必要があります。また、gs://BUCKET_NAME/OBJECT_NAME
の形式でファイルのフルパスを指定する必要があります。仮想ディスクを Cloud Storage に追加します。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
次のように置き換えます。
PROJECT_ID
: イメージのインポート先のプロジェクトのプロジェクト ID。IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI(たとえば、gs://my-bucket/my-image.vmdk
)。
提供できる追加の
args
値については、VM イメージのインポートに関する GitHub ページのオプションのフラグに関するセクションをご覧ください。レスポンスの例
次のレスポンスのサンプルは、返される出力に似ています。
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-09-20T15:55:29.353258929Z", "steps": [ { "name": "gcr.io/compute-image-import/gce_vm_image_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-timeout=7000s", "-image_name=my-image", "-client_id=api", "-data-disk", "-source_file=gs://my-bucket/my-image.vmdk" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456" } }
ビルドをモニタリングする方法はいくつかあります。
- 返される
build-id
を使用して、projects.builds.get リクエストを実行します。 - 指定された
logUrl
でホストされているログを確認します。
IMAGE_NAME
: 作成するイメージの名前。SOURCE_FILE
: インポートする仮想ディスクのローカル ファイルまたは Cloud Storage URI。OS
: インポートするディスク イメージの OS。OS のライセンスは、このフラグの値から推定されます。インポート時にライセンス情報を提供するための明示的なフラグはありません。サポートされている値の一覧については、--os
フラグをご覧ください。- Google Cloud コンソールで、仮想ディスク ファイルを Cloud Storage にアップロードします。
[イメージの作成] ページに移動します。
イメージの名前を指定します。
[ソース] で、[仮想ディスク(VMDK、VHD)] を選択します。
Cloud Storage ファイルのストレージの場所を参照するか、手動で入力します。
オペレーティング システムについて、[オペレーティング システムなし。データのみ。] を選択します。
(オプション)イメージの追加プロパティを指定します。たとえば、このイメージをイメージ ファミリーの一部として管理できます。
[作成] をクリックしてイメージをインポートします。
IMAGE_NAME
: 対象イメージの名前。SOURCE_FILE
: 仮想ディスク ファイル。このファイルは、ローカル ファイルまたは Cloud Storage に保存されているファイルでもかまいません。仮想ディスクがローカル ファイルの場合は、絶対パスまたは相対パスを使用できます。仮想ディスク ファイルがすでに Cloud Storage に保存されている場合は、インポート プロセスに使用されるプロジェクトの Cloud Storage バケットにそのファイルが存在する必要があります。また、gs://BUCKET_NAME/OBJECT_NAME
の形式でファイルの完全なパスを指定する必要があります。仮想ディスクを Cloud Storage に追加します。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api", "-data_disk" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
次の
args
値を置き換えます。PROJECT_ID
: イメージのインポート先のプロジェクトのプロジェクト ID。IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI(たとえば、gs://my-bucket/my-image.vmdk
)。
仮想ディスクを Cloud Storage に追加します。
イメージのインポート プロセスでは、仮想ディスクのオペレーティング システムにパッケージ マネージャーをインストールする必要があります。これらのパッケージ マネージャーでは、Google Cloud の外部にあるパッケージ リポジトリにリクエストを送信する必要がある場合があります。これらの更新へのアクセスを許可するには、Cloud NAT を構成する必要があります。詳細については、Cloud Router を使用した NAT 構成の作成をご覧ください。
限定公開の Google アクセスを構成します。詳細については、限定公開の Google アクセスの構成をご覧ください。
Google Cloud CLI か REST のいずれかを使用して仮想ディスクをインポートします。
仮想ディスクをインポートすると、プロジェクトに一時的な VM が作成されます。これらの一時的な VM に外部 IP アドレスが割り当てられないようにするには、追加のフラグまたは引数を指定する必要があります。
詳細については、次のタブをクリックしてください。
IMAGE_NAME
: 作成するディスク イメージの名前。SOURCE_FILE
: 仮想ディスク ファイル。ローカル ファイルまたは Cloud Storage に保存されているファイルでもかまいません。仮想ディスクがローカル ファイルの場合は、絶対パスまたは相対パスを使用できます。仮想ディスク ファイルがすでに Cloud Storage に保存されている場合は、インポート プロセスに使用されるプロジェクトの Cloud Storage バケットにそのファイルが存在する必要があります。また、gs://BUCKET_NAME/OBJECT_NAME
の形式でファイルのフルパスを指定する必要があります。ZONE
: イメージを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。PROJECT_ID
: イメージのインポート先のプロジェクトのプロジェクト ID。IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI。例:gs://my-bucket/my-image.vmdk
(gcloud compute images import
コマンド)ZONE
: イメージを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。- イメージのインポート プロセス中に、インポート中の UEFI ブートローダーを検出できない場合。
ディスクがデュアルブート可能で、Hybrid-mbr + UEFI または protection-mbr + UEFI が混在している場合。デュアルブート可能なディスクの場合、インポートはデフォルトで非 UEFI ブートになっている可能性があります。
IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI(たとえば、gs://my-bucket/my-image.vmdk
)。仮想ディスクを Cloud Storage に追加します。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-uefi_compatible", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
次のように置き換えます。
PROJECT_ID
: イメージのインポート先のプロジェクトのプロジェクト ID。IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI(たとえば、gs://my-bucket/my-image.vmdk
)。
IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: 仮想ディスク ファイル。ローカル ファイルまたは Cloud Storage に保存されているファイルでもかまいません。仮想ディスクがローカル ファイルの場合は、絶対パスまたは相対パスを使用できます。仮想ディスク ファイルがすでに Cloud Storage に保存されている場合は、インポート プロセスに使用されるプロジェクトの Cloud Storage バケットにそのファイルが存在する必要があります。また、gs://BUCKET_NAME/OBJECT_NAME
の形式でファイルのフルパスを指定する必要があります。SERVICE_PROJECT_ID
: イメージをインポートするプロジェクトの ID。ZONE
: イメージをインポートするゾーン。このゾーンはサブネットのリージョンと一致する必要があります。たとえば、SUBNET
がus-west1
の場合、インポート ゾーンは、us-west1-a
、us-west1-b
、us-west1-c
のいずれかにする必要があります。NETWORK
: 共有 VPC ネットワークへのフルパス。例:projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
SUBNET
: 共有 VPC サブネットワークへのフルパス。例:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
サンプル コマンド
gcloud compute images import example-image \ --source-file gs://source-bucket/source-file.vmdk \ --project my-image-project \ --zone us-west1-c \ --network projects/my-vpc-project/global/networks/my-shared-vpc \ --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
仮想ディスクを Cloud Storage に追加します。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-network=NETWORK", "-subnet=SUBNET", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
次の
args
値を置き換えます。SERVICE_PROJECT_ID
: イメージをインポートするプロジェクトの ID。IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI(たとえば、gs://my-bucket/my-image.vmdk
)。ZONE
: イメージをインポートするゾーン。このゾーンはサブネットのリージョンと一致する必要があります。たとえば、SUBNET
がus-west1
の場合、インポート ゾーンは、us-west1-a
、us-west1-b
、us-west1-c
のいずれかにする必要があります。NETWORK
: 共有 VPC ネットワークへのフルパス。例:projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
SUBNET
: 共有 VPC サブネットワークへのフルパス。例:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
仮想ディスクを Cloud Storage に追加します。
サービス アカウントを作成して最小限のロールを割り当てます。サービス アカウントの作成に関する詳細については、サービス アカウントの作成と管理をご覧ください。
少なくとも、指定した Compute Engine サービス アカウントには次のロールが割り当てられている必要があります。
roles/compute.storageAdmin
roles/storage.objectViewer
詳細については、Compute Engine サービス アカウントに必要なロールを付与するをご覧ください。
gcloud compute images import
を使用してイメージをインポートします。gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --compute-service-account SERVICE_ACCOUNT_EMAIL
次のように置き換えます。
IMAGE_NAME
: 対象イメージの名前。SOURCE_FILE
: 仮想ディスク ファイル。このファイルは、ローカル ファイルまたは Cloud Storage に保存されているファイルでもかまいません。仮想ディスクがローカル ファイルの場合は、絶対パスまたは相対パスを使用できます。仮想ディスク ファイルがすでに Cloud Storage に保存されている場合は、インポート プロセスに使用されるプロジェクトの Cloud Storage バケットにそのファイルが存在する必要があります。また、gs://BUCKET_NAME/OBJECT_NAME
の形式でファイルのフルパスを指定する必要があります。SERVICE_ACCOUNT_EMAIL
: 前のステップで作成した Compute Engine サービス アカウントに関連付けられているメールアドレス。
例
次の例では、メールアドレスが
image-export-service-account@proj-12345.iam.gserviceaccount.com
のサービス アカウントを使用して、gs://your_gcs_bucket
に保存されたmy_server.vmdk
という起動可能な仮想ディスクをインポートしています。gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk \ --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
仮想ディスクを Cloud Storage に追加します。
サービス アカウントを作成して最小限のロールを割り当てます。サービス アカウントの作成に関する詳細については、サービス アカウントの作成と管理をご覧ください。
少なくとも、指定した Compute Engine サービス アカウントには次のロールが割り当てられている必要があります。
roles/compute.storageAdmin
roles/storage.objectViewer
詳細については、Compute Engine サービス アカウントに必要なロールを付与するをご覧ください。
仮想ディスクを Cloud Storage に追加します。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-compute_service_account=SERVICE_ACCOUNT_EMAIL", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
次のように置き換えます。
PROJECT_ID
: イメージのインポート先のプロジェクトのプロジェクト ID。IMAGE_NAME
: インポートするイメージの名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI(たとえば、gs://my-bucket/my-image.vmdk
)。SERVICE_ACCOUNT_EMAIL
: 前のステップで作成した Compute Engine サービス アカウントに関連付けられているメールアドレス。
IMAGE_NAME
: 対象イメージの名前。SOURCE_IMAGE_NAME
: ソースイメージの名前。既存のライセンスを含むイメージを Google Cloud にインポートする方法については、お客様所有ライセンスの使用をご覧ください。
- 起動可能なイメージを使用する新しい VM インスタンスを作成する。
- プロジェクト間でイメージを共有する。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
サポートされているオペレーティング システム
起動可能なディスクと起動できないディスクの両方がインポートできます。 仮想ディスクを Compute Engine で起動できるようにするには、サポートされているオペレーティング システムのいずれかを実行している必要があります。
BYOL と BYOS のサポート
所有しているソフトウェア ライセンスまたはサブスクリプションを使用する場合は、それらのライセンスで仮想ディスクをインポートできます。BYOL または BYOS をサポートするオペレーティング システムについては、オペレーティング システムの詳細をご覧ください。
既存のライセンスを含むイメージをインポートするには、
--byol
フラグを指定してgcloud compute instances import
コマンドを実行します。制限事項
この機能の一般的な制限事項は次のとおりです。
この機能には、Linux に対する次の制限があります。
この機能には、Windows に対する次の制限があります。
権限
イメージをシームレスにインポートするには、必要な IAM ロールをアカウント、Cloud Build サービス アカウント、Compute Engine サービス アカウントに付与する必要があります。詳細については、必要な IAM ロールを付与するをご覧ください。
互換性の確認
VM のディスクをインポートする前に、VM 内に事前チェックツールをダウンロードして実行します。事前チェックツールは、インポート プロセスが失敗するか、Compute Engine でディスクが正常に動作しなくなる原因となる可能性がある互換性に関する問題を検出します。
仮想ディスクをインポートする
仮想ディスクは、Google Cloud コンソール、Google Cloud CLI、Cloud Build API のいずれかを使用してインポートできます。
起動可能な仮想ディスクをインポートする
起動可能なディスクの場合、インポート ツールがオペレーティング システムを自動的に検出し、必要なドライバとパッケージを特定するため、オペレーティング システムを指定する必要はありません。ただし、検出されたオペレーティング システムをオーバーライドする必要がある場合は、
--os
フラグまたは-os
パラメータを指定します。サポートされている値の一覧については、--os
フラグをご覧ください。コンソール
gcloud
gcloud compute images import
コマンドを使用して、起動可能な Compute Engine イメージを作成します。Compute Engine ではほとんどのブートディスク イメージを起動できますが、import
コマンドを使用すると、必要なドライバと最新のゲスト環境パッケージが必ずディスクに収められます。これらは、インスタンスを起動して SSH や RDP で接続する際に必要になります。仮想ディスク ファイルは、Cloud Storage バケットまたはローカル ワークステーションからインポートできます。
ワークステーションから仮想ディスク ファイルをインポートする場合、インポート ツールによってファイルが Cloud Storage バケットに自動的にアップロードされます。
インポート プロセスを開始する前に、仮想ディスク ファイルを手動で Cloud Storage にアップロードすることもできますが、インポート プロセスで使用されるのと同じプロジェクト内の Cloud Storage バケットにファイルをアップロードする必要があります。
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE
次のように置き換えます。
既存のライセンスを使用してイメージをインポートする場合は、
--byol
フラグを指定します。gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE --byol
既存のライセンスを含むイメージを Google Cloud にインポートする方法については、お客様所有ライセンスの使用をご覧ください。
ローカル ファイルを指定すると、仮想ディスクのサイズやネットワーク接続の速度によって、アップロード オペレーションに長時間かかることがあります。インポート オペレーションは、ディスクのサイズによって数十分かかることがあります。
例
次の例では、
gs://your_gcs_bucket
に保存されているmy_server.vmdk
という名前の仮想ディスクをインポートします。gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk
オプション パラメータ
デフォルトでは、インポートされたすべてのブートディスク イメージにゲスト環境パッケージが追加されます。これらのパッケージが不要な場合は、インポート コマンドに
--no-guest-environment
フラグを追加してください。REST
ライセンスをインポートして仮想ディスクに追加する
イメージのインポート時にライセンスを追加するには、次の
gcloud compute images import
コマンドを使用します。gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE --os=OS
次のように置き換えます。
ライセンスの表示と追加の詳細については、ライセンスを表示、追加するをご覧ください。
起動できない仮想ディスクをインポートする
コンソール
gcloud
gcloud compute images import
コマンドを使用して、非起動の Compute Engine イメージを作成できます。仮想ディスクに起動可能なオペレーティング システムがインストールされていない場合は、--data-disk
フラグを指定します。これにより、Compute Engine でイメージを起動するためにドライバとゲスト環境パッケージをインストールする手順がスキップされます。gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --data-disk
次のように置き換えます。
例 1: 起動不可能な仮想ディスクを Cloud Storage からインポートする
次の例では、
gs://your_gcs_bucket
に保存されているmy_disk.vmdk
という名前の仮想ディスクをインポートします。gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_disk.vmdk --data-disk
例 2: タイムアウト値を指定してサイズの大きい VMDK ファイルをインポートする
インポート プロセスのデフォルトのタイムアウト値は 2 時間です。サイズの大きい VMDK ファイルのインポートには、最大で 24 時間かかることがあります。このようなサイズの大きいファイルをインポートするときに
--timeout
フラグを指定しないと、プロセスは 2 時間後に失敗します。次の例では、
gs://your_gcs_bucket
に保存されているmy_disk.vmdk
という名前の仮想ディスクをインポートします。このインポートのタイムアウト値は 24 時間です。gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_disk.vmdk --data-disk --timeout=24h
REST
外部 IP アドレスを許可しないネットワークを使用したディスクのインポート
外部 IP を許可しないネットワークを使用して仮想ディスクをインポートするには、次の手順で操作します。
gcloud
仮想ディスクをインポートするには、
--no-address
フラグを指定してgcloud compute images import
コマンドを使用します。gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --zone=ZONE \ --no-address
次のように置き換えます。
REST
POST
リクエストを Cloud Build API に送信し、-no-external-ip
引数を指定します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-no_external_ip", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-import/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
次のように置き換えます。
UEFI ブートローダーによる仮想ディスクのインポート
ほとんどの仮想ディスクでは、追加のフラグを使用しなくても、Compute Engine は UEFI ブートローダーでディスクを検出して正常にインポートできます。
ただし、次のような場合は、インポート中に UEFI ブートを強制的に実行する必要があります。
gcloud
インポートで UEFI ブートを強制的に使用するには、
gcloud compute images import
コマンドを使います。gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --guest-os-features=UEFI_COMPATIBLE
次のように置き換えます。
例
次の例では、
gs://my-gcs-bucket/
に保存されているmy-disk.vmdk
という名前の仮想ディスクをインポートし、UEFI ブートの使用を強制します。gcloud compute images import my-imported-image \ --source-file gs://my-gcs-bucket/my-disk.vmdk \ --guest-os-features=UEFI_COMPATIBLE
REST
インポートでの UEFI ブートの使用を強制するには、Cloud Build API を使用して
-uefi_compatible
引数を指定します。その方法は次のとおりです。共有 VPC を使用した仮想ディスクのインポート
共有 VPC を使用する仮想ディスクをインポートする前に、Cloud Build サービス アカウントに
compute.networkUser
ロールを追加する必要があります。詳細については、Cloud Build サービス アカウントに必要なロールを付与するをご覧ください。gcloud
仮想ディスクをインポートするには、
gcloud compute images import
コマンドを使用します。gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --project SERVICE_PROJECT_ID \ --zone ZONE \ --network NETWORK \ --subnet SUBNET
次のように置き換えます。
REST
カスタム Compute Engine サービス アカウントを使用した仮想ディスクのインポート
イメージのインポート中に、プロジェクトに一時的な仮想マシン(VM)インスタンスが作成されます。これらの一時的な VM 上のイメージ インポート ツールには認証が必要です。
サービス アカウントは VM に接続されている ID です。サービス アカウントのアクセス トークンは、インスタンス メタデータ サーバーからアクセスでき、VM 上のイメージ インポート ツールの認証に使用できます。
デフォルトでは、インポート プロセスには、プロジェクトのデフォルトの Compute Engine サービス エージェントが使用されます。ただし、プロジェクトでデフォルトの Compute Engine サービス アカウントが無効になっている場合や、カスタム Compute Engine サービス アカウントを使用する場合は、サービス アカウントを作成してインポート プロセスで指定する必要があります。
gcloud
REST
イメージを起動可能にする
起動可能なオペレーティング システムを搭載していながら必要な Compute Engine ドライバやゲスト環境パッケージがない Compute Engine カスタム イメージがある場合、イメージ インポート ツールを使用すると、そのイメージを Compute Engine で起動可能にできます。
インポートする新しいディスクを指定する
--source-file
フラグを使用する代わりに、--source-image
フラグを使用して、起動可能にするカスタム イメージを指定します。gcloud compute images import IMAGE_NAME \ --source-image SOURCE_IMAGE_NAME
次のように置き換えます。
サンプル コマンド
次の例では、
my-image
という名前の Compute Engine イメージをmy-bootable-image
という起動可能なイメージに変換します。この例の場合、--os ubuntu-1604
は検出されたオペレーティング システムをオーバーライドしています。gcloud compute images import my-bootable-image \ --source-image my-image \ --os ubuntu-1604
リソースのクリーンアップ
Cloud Storage に保存されているファイルと Compute Engine のイメージには料金が発生します。インポート ツールにより、仮想ディスク ファイルが Cloud Storage にインポートされ、Compute Engine のカスタム イメージが 1 つ作成されます。
イメージが正常にインポートされ、Compute Engine インスタンスとして正常に起動することを確認したら、Cloud Storage から仮想ディスク ファイルを削除できます。このツールにより、ファイルが Cloud Storage にアップロードされると、そのファイルの URI が出力されます。この URI の形式は
gs://BUCKET_NAME/tmpimage/IMAGE_NAME
です。--data-disk
フラグを使用してイメージをインポートした後、--source-image
フラグを指定してimport
ツールをもう一度実行してそのイメージを起動可能にしても、最初のイメージはまだ残っています。そのイメージが不要な場合は、削除することを検討してください。--image
と--source-image
の両方のフラグに同じイメージ名を指定すると、そのイメージは自動的に上書きされるため、それ以上のクリーンアップは不要です。次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-21 UTC。
-