Packerはマシン・イメージの自動生成や管理をするコマンドライン・ツール。HashiCorp製のツールでGoで実装されている。Packer 1.5.0からHCLを対応したとのことで現在はこちらが推奨されていてちょっと古い記事だと気にして読む必要がある。
使い方
packerビルドを実行するファイルの拡張子は.pkr.hcl
。
インストール方法は以下のようになっている。
1.5あたりからオプションがガラッと変わっているので注意。とりあえず最新を入れておけば特に問題はなさそう。
AMIを作成する
Packerを使用してAWSのAMIを作成するHCLの例
variable "aws_access_key" {} variable "aws_secret_key" {} provider "aws" { region = "us-west-2" # 任意のAWSリージョンを指定 access_key = var.aws_access_key secret_key = var.aws_secret_key } # AMI作成の設定 locals { ubuntu_ami_owner = "099720109477" # CanonicalのAWSアカウント ubuntu_ami_name = "ubuntu-18.04-ami" } # ビルダー設定 source "amazon-ebs" "ubuntu" { ami_name = "${local.ubuntu_ami_name}" instance_type = "t2.micro" region = "us-west-2" # 任意のAWSリージョンを指定 source_ami_filter { filters = { name = "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" root-device-type = "ebs" virtualization-type = "hvm" } most_recent = true owners = [local.ubuntu_ami_owner] } } # ビルド設定 build { sources = ["source.amazon-ebs.ubuntu"] }
あとはこんなコマンドを実行することでAMIが作成される
$ packer build -var 'aws_access_key=YOUR_AWS_ACCESS_KEY' -var 'aws_secret_key=YOUR_AWS_SECRET_KEY' template.hcl