【パッカー】

Packer とは?

💡 一度書いたレシピで、どのクラウドにも同じ環境を焼き上げる職人
📌 このページのポイント
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やソフトウェアインストール済みの状態を丸ごとスナップショットにしたものだよ。サーバーを起動するとき、ゼロからインストールするんじゃなくて、このイメージから一瞬で複製できるんだ。手作業で作ると環境差異が出るから、自動化が大事なんだよ。

ひよこ ひよこ

DockerfileでDockerイメージを作るのと何が違うの?

ペンギン先生 ペンギン先生

Dockerfileはコンテナイメージ専用だけど、Packerはそれに加えてAWSのAMI、AzureVMイメージ、VMware仮想マシンテンプレートなど、あらゆるプラットフォームのイメージを作れるんだ。1つのPackerテンプレートから複数の形式を同時にビルドできるのが最大の強みだよ。

ひよこ ひよこ

具体的にはどうやって使うの?

ペンギン先生 ペンギン先生

HCL(HashiCorp Configuration Language)で設定ファイルを書くんだ。「ベースはUbuntu 22.04、Nginxインストール、設定ファイルを配置」みたいにレシピを書いて、`packer build`コマンドを叩くと、指定した全プラットフォームのイメージが一括で作られるよ。

ひよこ ひよこ

マルチクラウド対応って実際に使うことあるの?

ペンギン先生 ペンギン先生

あるよ。たとえばメインはAWSだけど、DR(災害復旧)環境はAzureに置いている企業では、同じ構成のイメージを両方に用意する必要がある。Packerなら1つのテンプレートで両方作れるから、環境差異をなくせるんだ。

ひよこ ひよこ

ゴールデンイメージって何?普通のイメージと違うの?

ペンギン先生 ペンギン先生

セキュリティパッチ適用済み・社内標準ツール導入済み・セキュリティ設定済みの「お墨付き」イメージのことだよ。PackerをCI/CDに組み込んで、定期的にゴールデンイメージを自動更新する運用が大企業では一般的だね。これで全サーバーが常に最新・安全な状態を保てるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Packer」って出てきたら「マシンイメージを自動で作るツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Packer」 = 荷造りする人・梱包する人
💬 必要なソフトウェアや設定をイメージに"パッキング(梱包)"するというイメージが名前の由来だよ
← 用語集にもどる