【パッカー】

Packer とは?

最終更新:
💡 1つのレシピから、各クラウド向けの「起動用の型」をまとめて焼き上げる

HashiCorp製のマシンイメージ作成ツール。1つの設定から、AWSのAMIやAzureのVMイメージ、Dockerイメージなど複数のプラットフォーム向けのイメージを作れる。

📌 このページのポイント
Packer → マルチクラウドイメージビルドフロー HCLテンプレート source "amazon-ebs" source "azure-arm" source "docker" 1つのファイルで定義 Packer Build Shell / Ansible パッケージ導入・設定 AWS AMI Amazon Machine Image Azure VM Image Managed Image Docker Image コンテナイメージ CI/CDパイプライン統合 コード変更 → packer build → テスト → 配布 1テンプレート → 複数プラットフォーム向けのイメージを既定で並列ビルド
Packer によるマルチクラウドイメージビルドフロー
ひよこ ひよこ
マシンイメージって何?なんで自動で作る必要があるの?
ペンギン先生 ペンギン先生
OSと必要なソフトを入れて設定まで済ませた状態を、起動用の型として保存したものだよ。AWSならAMIがそれだね。手作業で作ると担当者や時期によって中身がずれやすいから、手順をコードにして同じ型を作り直せるようにするんだ
ひよこ ひよこ
DockerfileでDockerイメージを作るのと何が違うの?
ペンギン先生 ペンギン先生
Dockerfileはコンテナイメージを作るためのものだね。Packerはコンテナイメージに加えて、AWSのAMIやAzureのVMイメージ、VMware向けのイメージなど、プラグインがあるプラットフォームの形式を作れるよ。1つのテンプレートに複数の出力先を書くと、既定で並列にビルドするんだ
ひよこ ひよこ
具体的にはどうやって使うの?
ペンギン先生 ペンギン先生
HCLという書き方のテンプレートに、元にするイメージ(source)と、入れるソフトや設定の手順(プロビジョナー)を書くよ。たとえば「Ubuntuを元にNginxを入れる」と書いて「packer build」を実行すると、指定した各プラットフォームのイメージが作られるんだ
ひよこ ひよこ
ゴールデンイメージって何?普通のイメージと違うの?
ペンギン先生 ペンギン先生
組織で決めた更新・ツール・セキュリティ設定を済ませて、テストも通した標準のイメージのことだよ。CI/CDでPackerを定期的に動かせば、新しく起動するサーバーを更新済みの状態から始められるんだ
ひよこ ひよこ
じゃあ全部のサーバーがいつも最新になるの?
ペンギン先生 ペンギン先生
そこは別だよ。イメージを作り直しても、すでに動いているサーバーの中身は自動では変わらないんだ。新しいイメージのサーバーに入れ替えるか、別の方法で更新する必要があるよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Packer」って出てきたら「設定ファイルからマシンイメージを自動で作るツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Packer」 = 荷造りする人・梱包する人
💬 英語で「詰める人」という意味の言葉だよ。ソフトや設定をイメージに詰め込むツールの役割と重ねて覚えるとわかりやすいね

参考資料

← 用語集にもどる