GMOアドマーケティングのT.Kです。
今回はPackerのインストールから簡単なイメージ作成までを行います。
GCPにアクセスするので、事前にサービス アカウントの設定を済ませてください。
インストール
MacはHomebrewでインストールできます。
他の環境はこちらの手順を参考にしてください
1 |
$ brew install packer |
構成ファイルの定義
image_familyを使うとグループ内の最新イメージを使うのが楽に指定できます。
このサンプルはansibleをインストールしただけのイメージを作ります。
詳しい定義はこちらを参照してください
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
{ "variables": { "project_id": "YOUR_PROJECT", "image_family": "IMAGE_FAMILY", "account_file_path": "{{ env `GOOGLE_APPLICATION_CREDENTIALS` }}" }, "builders": [ { "type": "googlecompute", "account_file": "{{user `account_file_path`}}", "project_id": "{{user `project_id`}}", "source_image_family": "centos-7", "ssh_username": "packer", "zone": "us-central1-a", "image_family": "{{user `image_family`}}", "image_name": "{{user `image_family`}}-{{timestamp}}" } ], "provisioners": [ { "type": "shell", "inline": [ "sleep 5", "sudo yum -y update", "sudo yum -y --enablerepo=epel install ansible", "sudo chown -R packer:packer /etc/ansible" ] } ] } |
構文チェック
1 |
$ packer validate test.json |
ビルド
1 |
$ packer build test.json |
まとめ
今回はansibleのインストールのみだったので、ビルドは数分で終わりました。
ベンダーが提供するOSイメージから本番環境の構築までに数十分かかります。
ある程度構築の済んだイメージを段階的に作って置く事で、最新イメージの作成時間を短縮できます。