地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

Packerへ入門する

github.com

Packerはマシン・イメージの自動生成や管理をするコマンドライン・ツール。HashiCorp製のツールでGoで実装されている。Packer 1.5.0からHCLを対応したとのことで現在はこちらが推奨されていてちょっと古い記事だと気にして読む必要がある。

使い方

packerビルドを実行するファイルの拡張子は.pkr.hcl

インストール方法は以下のようになっている。

developer.hashicorp.com

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