Packerを使ってAMIのバージョンを管理する

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

■ 概要

  • Packerの概要とインストール方法の解説
  • AWSのAMIをPacker経由で作成する方法

■ Packerとは

  • VagrantやTerraform等インフラツールを開発しているHashicorpのプロダクト
  • マシンイメージをTemplateと呼ばれる設定ファイルから各プラットフォーム向けに生成することに特化したツール
  • AWSの場合、jsonの設定情報を元に実際にインスタンスを立ち上げ、指定された操作を行い、AMIを取得後インスタンスを削除するという流れが自動化できる。
  • Templateはjsonでシンプルに記述可能。
  • Packerで作成したマシンイメージを元にTerraformでリソースを構築するのが定番の使い方
  • 公式

■ 用語の説明

ビルダー(builder)

  • JSON形式のテンプレートを元に、特定の環境上でマシン・イメージの起動、設定適用、作成を自動的に行う一連の設定の事。
  • 最終的に、成果物として新しいマシン・イメージ(アーティファクト)作成する

プロビジョナー(provisioner)

  • ビルダーの中で定義するマシンイメージの設定部分。
  • ミドルウェアやアプリケーションの設定を記述することでマシンイメージへのプロビジョニングを行う
  • シェルスクリプトの自動実行のほか、構成管理ツールであるChefかPuppetを実行する機能を持つ

アーティファクト(artifact)

  • Packerによって最終的に生成されるマシンイメージの事
  • SaasSとしてAWSを用いてる場合、Packer経由で生成されたAMIがこれにあたる

packer_1

予備知識:ゴールデンイメージ =アーティファクト??

単語の意味を少し整理します

ゴールデンイメージ
  • 即サービスイン可能なマシンイメージの事を指す
  • プロビジョニング適用済 & アプリケーションがdeploy済み
アーティファクト
  • Packerのビルダーによって生成されたイメージを示す言葉
  • そのイメージが即サービスイン可能かどうかはプロビジョナーの定義内容による
  • もしプロビジョナーにサーバとしてのプロビジョニング/deploy要件が全て定義されてるのであれば、そのアーティファクトはゴールデンイメージと呼べる
  • deployの度にアーティファクトを生成する必要が有るため、一般的にはPackerではミドルウェア要件までを担保し、アプリケーションはconsulなり何かしらサービスイン前に自動でdeployされる機構を作るのが一般的
  • 参考

■ インストール

  • GOのシングルバイナリを実行パスに置けば完了
  • Terraformの同じなので、以下のようなinitスクリプトを用意しておくと便利

■ テンプレートの作成

  • Amazon Linuxの最新AMIから作成する
  • 公式

image

■ テンプレートの検証

  • validateコマンドを使うことでsyntackチェックが可能
  • inspectでどのようなビルドを行うか確認が可能

■ アーティファクトの作成

  • buildコマンドで実行可能

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*