Vagrant の仕組み上で Puppet をシンプルに導入しようとした話
そろそろミドルウェアだけでなく、ソフトウェア開発の方にも手を出そうと思い、学んだPuppetをVagrant上で利用したら以外と面倒だったのでメモ.
VagrantでPuppetを動作させるためには
PuppetがゲストOSにインストールされている必要がある。
となると、PuppetでゲストOSの起動時には必要な構成が出来上がっていて欲しいのに
- Puppetでプロビジョニングせず(正確にはできなくて)にゲストOSを起動
- ゲストOSにアクセス
- Puppetをインストール
- ゲストOSを抜ける
- Puppetでプロビジョニングを行う
という上記のような面倒な工程を踏まなければならない。
環境構築に関してはPuppetに完全に委譲したいのに、Puppetを動作させるための環境構築が必要という工程が入って手間。
Vagrantの起動時にPuppetを動作させる手段
自分が把握しているところでは以下の通り。
他にもあるようなら教えて欲しいです。
- Vagrantのbox作成機能で、Puppetを実行できる構成のboxファイルを用意する
- Puppetのプロビジョニング実行前に、コマンドラインプロビジョニングでPuppetを実行できる状態にする
- petems/vagrant-puppet-install · GitHub を使う
それぞれのメリット
1. Boxファイルさえ用意してしまえば良い
2. 同じコマンドが使用できれば、どのようなゲストOSにも適応できる.
3. 2をラップして様々なゲストOSで動作させられるような工夫が凝らされており、今後機能が拡張される可能性がある.
Puppetをコマンドでインストールする
今回はCentOSを使用しているので、yumを使用してpuppetをインストールを行っていきたい.
ただし、デフォルトではpuppetはyumのレポジトリには含まれていない.
そこで、今回はPuppetlabsに公開されているrpmをインストールすることで、yumでpuppetを参照可能にする.
$ rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-11.noarch.rpm
このrpmは https://yum.puppetlabs.com/ いかに公開されているので、自分のOSとバージョンに合うものを使用してほしい.
これで、puppetのインストールが可能になるので、上を参考にして以下のようにVagrantfileに記述する.
config.vm.provision "shell", inline: <<-SHELL rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-11.noarch.rpm sudo yum install -y puppet SHELL config.vm.provision "puppet" do |puppet| # うえのコマンドによりpuppeがインストールされているので、puppetのプロビジョニングが正常に行える end