Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

CodeBuild + PackerでAMIを焼く

CodeBuild + Packerを使って、AmazonLinuxベースのimageを焼きます。

完成品こちらです

github.com

構成図

f:id:sion_cojp:20190128200331p:plain

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を焼いてくれます。