Packer は、単一のソース構成から複数のプラットフォーム向けに同じ仮想マシン(VM)イメージを作成するオープンソース ツールです。このページでは、Packer と Cloud Build によって Compute Engine で使用する VM イメージを作成する方法について説明します。
準備
このページの説明は、Packer の知識があることを前提としています。また、次の準備が必要です。
- Packer テンプレートを含むソースコードを用意します。
- このページの
gcloudコマンドを使用する場合は、Google Cloud CLI をインストールします。 次の API を有効にします。
gcloud services enable sourcerepo.googleapis.com gcloud services enable compute.googleapis.com gcloud services enable servicemanagement.googleapis.com gcloud services enable storage-api.googleapis.com
必要な IAM 権限
Cloud Build で Packer を使用するには、Build サービス アカウントに Compute Engine インスタンス管理者ロール(
roles/compute.instanceAdmin.v1)を付与します。ビルドされたイメージを Artifact Registry に保存するには、ビルドサービス アカウントに Artifact Registry 書き込み(
roles/artifactregistry.writer)ロールを付与します。
Packer ビルダー イメージを作成する
Cloud Build の Packer コミュニティ ビルダー イメージを使用すると、Cloud Build で packer コマンドを呼び出すことができます。このビルダーを Cloud Build 構成ファイルで使用する前に、イメージをビルドして Artifact Registry に push する必要があります。
cloud-builders-community リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.gitPacker ビルダー イメージに移動します。
cd cloud-builders-community/packerビルダーをプロジェクトに送信します。
gcloud builds submit .
Packer ビルダーを使用する
ソースコードとともに packer.json ファイルが存在することを確認します。
プロジェクトのルート ディレクトリに、
cloudbuild.yamlまたはcloudbuild.jsonという名前のビルド構成ファイルを作成します。ビルド構成ファイルに、
packer buildコマンドを呼び出すビルドステップを追加します。YAML
steps: - name: 'gcr.io/[PROJECT_ID]/packer' args: - build - -var - image_name=[IMAGE_NAME] - -var - project_id=[PROJECT_ID] - -var - image_family=[IMAGE_FAMILY] - -var - image_zone=[IMAGE_ZONE] - packer.jsonJSON
{ "steps": [ { "name": "gcr.io/[PROJECT_ID]/packer", "args": [ "build", "-var", "image_name=[IMAGE_NAME]", "-var", "project_id=[PROJECT_ID]", "-var", "image_family=[IMAGE_FAMILY]", "-var", "image_zone=[IMAGE_ZONE]", "packer.json" ] } ] }ここで
[PROJECT_ID]は Google Cloud プロジェクト ID です。[IMAGE_NAME]は、作成中の VM イメージの名前です。[IMAGE_FAMILY]は、VM イメージのイメージ ファミリーです。[IMAGE_ZONE]は、イメージのゾーンです。
ビルド構成ファイルを使用してビルドを開始します。
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]ここで
[CONFIG_FILE_PATH]は、ビルド構成ファイルへのパスです。[SOURCE_DIRECTORY]は、ソースコードへのパスまたは URL です。[REGION]は、サポートされているビルド リージョンの一つです。
gcloud builds submitコマンドに[CONFIG_FILE_PATH]と[SOURCE_DIRECTORY]を指定しないと、Cloud Build は、構成ファイルとソースコードが現在の作業ディレクトリにあることを前提とします。
ビルドされたイメージは、 Google Cloud コンソールの Compute Engine イメージページで確認できます。
次のステップ
- コンテナをビルドする方法を学習する。
Goプロジェクトのビルド方法を学習する。- ビルドエラーをトラブルシューティングする方法について学習する。