LoginSignup
1
0

More than 3 years have passed since last update.

HCL2形式ファイルでのPacker実行

Last updated at Posted at 2020-03-13

要約

PackerをHCL2で記述してみた

背景

Packer 1.5.0からHCLを対応したとのことなので、使ってみた。

ここでは、以下のようにPackerを使う

実施内容

PackerとAnsibleを使いNginxのVMイメージ(カスタムイメージ)をGCP上で作成する。

詳細条件

  • Packer version: 1.5.4
  • ansible version: 2.9.4
  • IaaS: GCP

フォルダ構成は、下記の通り

  ./
   |
   +- build.pkr.hcl
   +- locals.pkr.hcl
   +- source.pkr.hcl
   +- variables.pkr.hcl
   |
    -scripts/
         |
         - ansible-playbook.yaml

記法

  • packerビルドを実行するファイルの拡張子: .pkr.hcl
  • 処理のブロック: source, build , variables , locals

各ファイルの中身

build.pkr.hcl
build {
  sources = [
    "source.googlecompute.nginx"
  ]
  provisioner "ansible" {
    playbook_file   = "./scripts/ansible-playbook.yaml"
    user            = "packer"
    extra_arguments = ["-vvvv"]
  }
}
source.pkr.hcl
source "googlecompute" "nginx" {
  project_id          = "ca-kitano-study-sandbox"
  source_image_family = local.img_fam
  preemptible         = true
  ssh_username        = "packer"
  zone                = "asia-northeast1-b"
  image_name          = var.image-name
  tags                = ["packer"]
}
locals.pkr.hcl
locals {
  img_fam = "debian-9"
}
variables.pkr.hcl
variable "image-name" {
  type = string
  default = "nginx-demo"
}

Ansible Playbookは下記の通り。

ansible-playbook.yaml
- hosts: all
  become: true
  tasks:
    - name: package repository update
      apt:
        update_cache: yes

    - name: install nginx
      apt:
        name:
          - nginx

実行方法

$packer build ./

実行が成功すると、GCP上に image_name で指定したカスタムイメージが作成される。

まとめ

packerをhcl2形式で記載した。json形式よりも書きやすい。
TerraformでHCL形式に慣れている人は、是非使っていくとよいと思う。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0