サイトアイコン TakeNotes.JP

Packerを使ってGCEのマシンイメージを作成する

Packerを使ってCompute Engineのマシンイメージを作成し、Google Cloud上のプロジェクトに保存する方法です。

前提:Packerのインストールが済んでいること、Google Cloudのプロジェクト作成が済んでいること

注意:PROJECT_NAMEは各自の環境に置き換えてください。

まずはマシンイメージ作成用のサービスアカウント(machin-builder@PROJECT_NAME.iam.gserviceaccount.com)を作成

gcloud iam service-accounts create machine-image-builder \
--display-name="Pakcerを使ったマシンイメージ作成用サービスアカウント" \
--project="PROJECT_NAME"

マシンイメージ作成に必要な権限を付けていきます。

gcloud projects add-iam-policy-binding PROJECT_NAME \
--role roles/storage.admin \
--member serviceAccount:machine-image-builder@PROJECT_NAME.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding PROJECT_NAME \
--role roles/compute.instanceAdmin.v1 \
--member serviceAccount:machine-image-builder@PROJECT_NAME.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding PROJECT_NAME \
--role roles/compute.networkAdmin \
--member serviceAccount:machine-image-builder@PROJECT_NAME.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding PROJECT_NAME \
--role roles/compute.securityAdmin \
--member serviceAccount:machine-image-builder@PROJECT_NAME.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding PROJECT_NAME \
--role roles/iam.serviceAccountActor \
--member serviceAccount:machine-image-builder@PROJECT_NAME.iam.gserviceaccount.com

IAM の画面から確認して、5つの権限が付いていればOK

サービス アカウント に移動し、作成したサービスアカウントから鍵(JSONファイル)をダウンロード

packer.json を新規に作成し、account_fileの箇所でダウンロードしたJSONファイルを指定します。

{
  "builders": [
    {
      "type": "googlecompute",
      "account_file": "./PROJECT_NAME-machine-image-builder.json",
      "project_id": "PROJECT_NAME",
      "source_image_family": "centos-7",
      "zone": "asia-northeast1-a",
      "disk_size": "20",
      "image_name": "hoge-fuga",
      "image_family": "hoge-test",
      "ssh_username": "hoge"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": [
        "sudo yum install -y wget git",
        "sudo yum clean all"
      ]
    }
  ]
}

 

packer validate packer.json で文法チェック

packer build packer.json でビルド実行

packer build -force packer.json マシンイメージが作成済みでも上書きできます。

作成できたらCompute Engine のイメージから確認できます。

ちなみに作ったイメージはCloud StorageにVMDKなどの形式でエクスポートすることもできます。

モバイルバージョンを終了