DevOps Okinawa #3 に参加してきました。
https://github.com/OkinawaDevOps/DevOpsOkinawa-3
もくもくネタはとくに決めてなかったので、とりあえずPacker で VirtualBox 向けのイメージを作成することにトライしてみることに。
会の進行
そもそも、会の進行についてもまだよくわかっていないので、最初に README.md をよく読む。
やることを Issue 登録して進行していく方式。これは "すごい広島" 方式、というものの模様。
Packer をインストール
手始めな Issue を登録し、早速、以下な記事を参考に Packer をインストール。
http://www.packer.io/intro/getting-started/setup.html
当方 Mac のため Brewfile に以下な記述があることを確認し、
# Add Repository... tap homebrew/binary # Packages... install packer
以下でインストール。
brew bundle
GETTING STARTED みながら Packer を使う
とは言えまだ Packer の使い方もよくわからないので GETTING STARTED に従ってやってみる。
http://www.packer.io/intro/getting-started/build-image.html
GETTING STARTED では Redis がプリインストールされた Amazon EC2 AMI を作成する模様。
イメージのビルドに t1.micro インスタンスを使うので AWS アカウントが必要。
Packer がビルドするために使う設定ファイルは、テンプレートと呼ばれる模様。テンプレートは以下(example.json)
{ "variables": { "aws_access_key": "", "aws_secret_key": "" }, "builders": [{ "type": "amazon-ebs", "access_key": "{{user `aws_access_key`}}", "secret_key": "{{user `aws_secret_key`}}", "region": "us-east-1", "source_ami": "ami-de0d9eb7", "instance_type": "t1.micro", "ssh_username": "ubuntu", "ami_name": "packer-example {{timestamp}}" }] }
aws_access_key と aws_secret_key はテンプレートの中に書かず、ユーザ変数で渡すべしとのこと。
テンプレートの builders セクションはビルダーの設定で、この場合 amazon-ebs というビルダーが使用される模様。 amazon-ebs はソース AMI から EBS-backed AMI をビルドしてプロビジョニングを行い、新しい AMI にリパッケージングするとある。
目標は VirtualBox のイメージを作成することだけど、 VirtualBox 用のビルダーはきっとあって、 それを導入すればあとはテンプレートを作成すればいいのではないかと予想。多分。
packer validate でテンプレートの内容をチェック。
packer validate example.json
以下のとおり良好。
Template validated successfully.
packer build でイメージのビルド。 aws_access_key と aws_secret_key は伏せますです。
packer build -var 'aws_access_key=xxxxxxxxxxxxxxxxxxxx' \ -var 'aws_secret_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \ example.json
実行し終えると以下なメッセージが末尾に、
==> Builds finished. The artifacts of successful builds are: --> amazon-ebs: AMIs were created: us-east-1: ami-eb998182
EC2 Dashboard で US East に切り替え、 AMI(ami-eb998182) の登録を確認。早速 Launch してみる。
SSH ログインは以下、
ssh ec2-54-237-228-42.compute-1.amazonaws.com -lubuntu \
-i ~/.keypairs/use-packer-NVirginia_us-east-1.pem
問題なくログインできる。
EC2 Dashboard をみると、作成した覚えのないインスタンスがすでにターミネートされている。 名前は Packer Builder 。 これは Packer がイメージのビルドのためソース AMI からインスタンス起動した痕跡かと。
ソース AMI からコピーして新しいイメージを作ることができましたということで、ひとまず成果あり。
次の機会に、以下なエントリを参考に何かをプリインストールしたイメージの作成にトライしてみます。