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 に保存するには、Cloud Build サービス アカウントに Artifact Registry 書き込み(
roles/artifactregistry.writer
)ロールを付与します。
Packer ビルダー イメージを作成する
Cloud Build の Packer コミュニティ ビルダー イメージを使用すると、Cloud Build で packer
コマンドを呼び出すことができます。このビルダーを Cloud Build 構成ファイルで使用する前に、イメージをビルドし、プロジェクトの Container Registry に push する必要があります。
cloud-builders-community リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Packer ビルダー イメージに移動します。
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.json
JSON
{ "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
プロジェクトのビルド方法を学習する。- ビルドエラーをトラブルシューティングする方法について学習する。