CodeBuild + Packerを使って、AmazonLinuxベースのimageを焼きます。
完成品こちらです
構成図
CodeBuildの準備
Terraformでセットアップします。
https://github.com/sioncojp/codebuild-packer/tree/master/terraform/codebuild/packer を参考にして terraform apply
してください。
やってることは、
- CodeBuild作成
- CodeBuildで使うファイル群を保管するs3作成
- CodeBuildのIAM作成
- Packerで使うEC2のIAM instance profile作成
- Packerで使うEC2のSG作成
instance profileを作っておくことで、後からAMIを焼くための権限をインスタンスに付与することができます。
s3にimageに必要なファイルをsyncし、codebuildにqueueを飛ばす
https://github.com/sioncojp/codebuild-packer/blob/master/Makefile
$ make build IMAGE=images/amazon-linux.json
やってることは、
- images配下をs3にsync
- codebuildにqueueを飛ばす
これでCodeBuildが起動し、s3にあるbuildspec.ymlを元に、AMIを焼いてくれます。