LoginSignup
1
1

More than 5 years have passed since last update.

Packerを使ってみて分からないところを調べてみた。

Posted at

はじめに

前回(Packerを使ってBoxイメージファイルを作成してみた。)、Packerを使ってみましたが、ファイルの中身について分からない部分が残っていたので、分からない箇所を調べてみました。

Packerに関する理解

マシン・イメージを自動構築し、作業効率を高めるPacker入門を読むのが早いです。

packerコマンドオプション

packerコマンドを実行したコマンドラインは次のとおり。

$ packer build -only=virtualbox-iso -var-file=centos7.json centos.json
オプション 説明
-only カンマで区切られた名前を持つビルドのみをビルドする。
-var-file 指定ファイルからテンプレート変数を設定する。

参照: build Command

テンプレートの定義

builders

buildersは、複数のプラットフォーム向けのマシンイメージを生成するための定義。

{
  "builders": [
    // ... one or more builder definitions here
  ]
}
設定項目 説明
boot_command virtualマシンの初期起動時に実行するコマンド群を定義する。コマンドの目的は、OSのインストールであるため、インストールのための必要なコマンドを定義する必要がある。
disk_size VM用のハードディスクのサイズをメガバイトで指定する。デフォルトは、40GB
guest_additions_path ★不明
guest_os_type ゲストOSの種類を設定する。
hard_drive_interface 主要ハードドライバに付属されるコントローラの種類を定義する。デフォルトはide。
Sataを設定すると、ドライバはAHCI SATAコントローラが付属される。scsiを設定すると、ドライバはLsiLogic SCSIコントローラーが付属される。
headless Packerのデフォルトは、マシンのコンソールを起動しVirtualBoxのvirtualマシンを構成する。trueを設定すると、コンソールを表示せずにマシンを起動する。
http_directory HTTPサーバを使用するためのディレクトリのパスを設定する。設定したパスにあるファイルは、virtualマシンからHTTPを経由し取得される。
iso_checksum OS ISOファイルのチェックサムを記述する。iso_checksumかiso_checksum_urlのどちらかを定義する必要がある。iso_checksum_urlが優先される。
iso_checksum_type checksumの種類を記述する。種類としては、md5,sha1,sha256,sha512がある。
iso_urls ISOのURLを指定する。URLには、HTTP URLかファイルURL(ファイルパス)を指定することができる。
output_directory virtualマシーンをどこのディレクトリに作成するのか指定する。デフォルトは、output-BUILDNAMEで作成する。(BUILDNAMEは、ビルド名)
shutdown_command プロビジョニングが終了する際に、マシンを終了する際に使用するコマンド。
ssh_password sshのパスワードを指定
ssh_username sshのユーザー名を指定
ssh_wait_timeout sshのタイムアウトを指定
type ビルドの種別。
vboxmanage virtualマシンを作成するためのVBoxManageコマンドをカスタマイズするための設定をする
virtualbox_version_file ★不明
vm_name 新規virtualマシンのOVFファイルの名前を指定する。デフォルトは、packer-BUILDNAME(BUILDNAMEは、ビルド名)

provisioners

provisionersは、マシンイメージにミドルウェア、アプリケーションなどのインストールや設定を自動で行うための定義。

{
  "provisioners": [
    // ... one or more provisioner definitions here
  ]
}
設定項目 説明
environment_vars key/valuesのペアをexecute_commandに注入する。(環境変数の設定)
execute_command スクリプトで実行するコマンドを定義する。
scripts スクリプト群をマシン上で実行する。絶対パスまたは相対パスで定義可能で、相対パスの場合は、Packer実行じのワーキングディレクトリが開始位置となる。
type provisionersの種別を定義。ここではshell
expect_disconnect デフォルトはfalse。エラーが発生した際に、サーバーとの接続を切断する。sshサーバまたはリブートした場合、切断が発生する。

post-processors

post-processorsは、ビルダーの結果を取得し新たらしいアーティファクトを作成するための定義。

{
  "post-processors": [
    // ... one or more post-processor definitions here
  ]
}
設定項目 説明
keep_input_artifact trueを設定した場合、ビルド成功時に、output_directoryを削除しない。
output post-processorによって作成されるboxファイルのパスを指定する。デフォルトは、packer_{{.BuildName}}_{{.Provider}}.box
type post-processorsの種別
vagrantfile_template boxとセットのVagrantfileのテンプレートのパス

{{user xxxxx} } とは?

{{user xxxxx}} と記述するとuserという関数を使用してxxxxxの値を取得することができる。
例えば、{{ user disk_size }}の場合は、variablesに定義したdisk_sizeの値を設定される。
Template Engine
Template User Variables

参考ページ

build Command
マシン・イメージを自動構築し、作業効率を高めるPacker入門
Packerを使ったISOイメージからの仮想マシン自動デプロイ

1
1
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
1