はじめに
前回(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イメージからの仮想マシン自動デプロイ