Ubuntu Server の EBS-Backed AMI を作成する Packer のスクリプトを書いた

 ここに配置しました。過去に投稿した json から更に発展し、sh をキックして ruby をインストールするようにしてあります。

 本当であれば /provisioners/inline か /provisioners/scripts のどちらかに統合したかったのですが、普通に inline で apt-get install -y build-essential などとやろうとすると

amazon-ebs: Reading package lists... Done
amazon-ebs: Building dependency tree
amazon-ebs: Reading state information... Done
amazon-ebs: Package build-essential is not available, but is referred to by another package.
amazon-ebs: This may mean that the package is missing, has been obsoleted, or
amazon-ebs: is only available from another source
amazon-ebs:
amazon-ebs: E: Package 'build-essential' has no installation candidate

 みたいなエラーが出て rubyコンパイル出来ず AMI の作成に失敗してしまう点が謎でした。かと言って scripts 側に apt-get update から書くと同じく

amazon-ebs: Reading package lists... Done
amazon-ebs: Building dependency tree
amazon-ebs: Reading state information... Done
amazon-ebs: Package build-essential is not available, but is referred to by another package.
amazon-ebs: This may mean that the package is missing, has been obsoleted, or
amazon-ebs: is only available from another source
amazon-ebs:
amazon-ebs: E: Package 'build-essential' has no installation candidate

 みたいなことになってしまうしよくわかりません。事前に apt-get update してるし、1行ずつ実行すると通るんですが。なんか根本的に間違ってんのかな。

 昔は Boxgrinder とか使ってたんですが今なら Packer でもいいかなという感じでした。