⚰️

PackerでVagrant用のBoxを作る-②

2021/04/17に公開

はじめに

この記事は、PackerでVagrant用のBoxを作る-① の続きで以下を行います

  1. PackerでBoxを作成
  2. 作成したBoxを用いて仮想マシンを作成
  3. 仮想マシンに接続
  4. ブラウザで確認(Apacheのテスト画面)

作業環境

Macで作業を行いました(Windowsでも同じ用に出来るはずです)
※試した環境の各ソフトウェアのバージョンは最新ではありませんのでご注意ください

ソフトウェア バージョン
Packer 1.6.0
Vagrant 2.2.4
VirtualBox 6.1.10

リポジトリ

公開用のリポジトリを用意しました
https://github.com/kaqua/border-collie

テンプレート

前回使用したテンプレートの provisionersAnsible を追加します

Ansible には、ansibleansible-local があります

  • ansible
    • PCにインストールされている ansible を使う
  • ansible-local
    • Packerによって構築されたマシン内の ansible を使う(※自分でインストールする必要があります)

Ansible のバージョンが管理されている環境では ansible を使い、そうじゃないのであれば ansible-local の方がいいかなと個人的には思います

単純に自分のPCにAnsible入れたくなかったので(特に意味はないんですけど)、
今回は ansible-local の例を記載しておきます

今回追加した ansible-local は以下です
イメージがつかない方は、リポジトリをご確認ください

  "provisioners": [
    {
      "type": "file",
      "source": "Ansibleに関連するファイルが置かれているディレクトリのパスを指定",
      "destination": "構築された仮想マシンのどのパスに送るかを指定"
    },
    {
      "type": "ansible-local",
      "playbook_file": "ローカル(PC)にある playbookファイル のパスを指定",
      "inventory_file": "ローカル(PC)にある inventoryファイル のパスを指定",
      "staging_directory": "構築された仮想マシンに置かれているansibleディレクトリを指定"
    }
  ]

ビルド

Packerを実行して、boxを作成します

command
$ cd packer/dev
$ packer build -var-file="var.json" packer.json

仮想マシンの作成とアクセス

command
$ cd ../../vagrant/centos7
$ vagrant box add --name centos7-machine ../box/centos7-machine.box
$ vagrant up
$ vagrant ssh

ブラウザで確認

Vagrantfile内で、 プライベートIPアドレス(192.168.33.10)を指定しているので、ブラウザにアクセスして確認します

以下のような、Apacheのテストページが表示されるはずです

おわりに

簡単にではありますが、 packer に ansible-local を使ってプロビジョニングを行いました
Packer と Ansible の連携はできたので、あとは Ansible でやりたいことを追加していくだけです
リポジトリも載せてありますので、ご参考にしていただければと思います

あと、Packer で Vagrant用のBoxを作る編は、これ以上発展が私にはできないので終わりにしたいと思います

Packerで AWSのAMI を作成するのを書くつもりですのでお待ちいただければと思います

Discussion