PackerとAnsibleを使ってGCEのイメージを作成する

タイトルの通り、PackerとAnsibleを使ってGCEのイメージを作成した。

www.packer.io

www.packer.io

PackerでGCEのイメージを作成する場合、

  1. ベースイメージからGCEインスタンスを作成
  2. インスタンスに対してprovisioning
  3. インスタンスからイメージを作成
  4. インスタンスを削除

という流れになっている。 googlecomputeビルダーのinstance_nameオプションとか、 イメージ作るオプションにインスタンス名とかどういうことなのかと思ったが、 イメージを作成する過程でGCEインスタンスを作成する際に使用されるようだ。 なので、最終成果物には関係ない。

なので例えばnetworkオプションは"default"でSSH接続さえできれば設定する必要はない。

instance_nameはuniqじゃないといけないが、uuid含めると場合によっては字数制限オーバーするので注意。

ビルダーのssh_usernameオプションでリモートユーザ名を指定する。

ansible.cfgとかinventoryファイルは特に用意せず、 playbookのhostsはallにした。

ちょっと困ったのがビルダーのsource_imageの値がわからなかったこと。 ubuntu server 16.04を使いたかったわけだが、どこにこの値が書いてあるのか分からなかった。

Images  |  Compute Engine  |  Google Cloud Platform

Google Cloud Platform

結局Webコンソールからインスタンスの生成フォームにある 「RESTを生成」からsourceImageの項目をチェックしたんだが、

$ gcloud compute images list

で一覧取得できることに今気づいた。。。