PackerでVagrant用のBoxを作る-②
はじめに
この記事は、PackerでVagrant用のBoxを作る-① の続きで以下を行います
- PackerでBoxを作成
- 作成したBoxを用いて仮想マシンを作成
- 仮想マシンに接続
- ブラウザで確認(Apacheのテスト画面)
作業環境
Macで作業を行いました(Windowsでも同じ用に出来るはずです)
※試した環境の各ソフトウェアのバージョンは最新ではありませんのでご注意ください
ソフトウェア | バージョン |
---|---|
Packer | 1.6.0 |
Vagrant | 2.2.4 |
VirtualBox | 6.1.10 |
リポジトリ
公開用のリポジトリを用意しました
テンプレート
前回使用したテンプレートの provisioners
に Ansible
を追加します
Ansible には、ansible
と ansible-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を作成します
$ cd packer/dev
$ packer build -var-file="var.json" packer.json
仮想マシンの作成とアクセス
$ 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