(packer)AWSのAMI作成を自動化する

投稿者: | 2018年3月3日

みなさんこんにちは。ヒロウミです。

PackerとAnsibleを使ってAWSのAMI作成を自動化してみたのでメモっておきます。コードとしてインフラを管理できるようになり、Gitなどと連携することによりチーム開発で大きな力を発揮するのではないでしょうか。

ツールのインストールも利用方法も簡単なため手軽に始められるところも魅力です。

前提条件

  • Packerがインストールされていること Install Packer
  • Ansibleがインストールされていること Installation
  • AWSのアカウントを保持していること
  • IAMロールが適切に付与されていること

手順

  1. テンプレートファイルを作成する
  2. Ansibleを記述する
  3. AWS環境変数を設定する
  4. packer validateを実行する
  5. packer buildを実行する

テンプレートファイルを作成する

今回はAWSで用意されているCentOS7のイメージに全サーバで共通する設定を行います。

provisionersの項目にAnsibleを設定することにより、設定内容をAnsibleで管理することができます。

Ansibleを記述する

common.yml

roles/common/tasks/main.yml

AWS環境変数を設定する

PackerでAWSを操作するためにはAPIを利用する設定が必要です。そのため、環境変数に以下の2つを設定しましょう。

packer validateを実行する

packerのテンプレートファイルのバリデートを実行します。

エラーが出力されたらテンプレートファイルを修正しましょう。以下のように「Template validated successfully」が出力されればOKです。

packer buildを実行する

最後にAMIの作成を実行します

AWSのコンソール画面で確認して見ます

AWSのAMI管理は煩雑になりやすいと思います。さらに、どんな手順を実行したのかが分からなくなってしまい、思わぬ設定漏れなども発生してしまいます。

今回ご紹介したPacker + Ansibleを用いてAMIの作成方法の統一化を行ってみてはどうでしょうか。