itamaeでVagrantの仮想マシンをプロビジョニングする
とても久しぶりですが・・。
掲題のように、構成管理ツールであるitamaeでローカルに簡単に開発環境を作成できるようにしたいと思い、やってみたのでメモ書き程度であるがまとめ。
ちなみになぜやるのか
もっと手軽にメンバーをジョインさせたい
まあこれがほぼ全てで、ある程度経験のある人だったらいいけど、非エンジニアのメンバーとかが開発もやってみたい!となった時に開発環境整えるのが壁になりそう・・と思ったから。
もちろん開発環境整えるのもそれはそれで勉強になる一面もあるが・・。
構成管理ツールを触ってみたかった
- 個人的なところでいえばこれもある。ansibleとかchefみたいなものでも良かったが、rubyで書けてかつ知り合いが使ってたのをみて、まあitamaeでもいっか、という感じで選んだ。
前提
- Virtual Machine,Vagrantは導入済み
- ディストリビューションはcentOS7
手順
①recipe.rbを用意する。内容は何でもよくて、とりあえず今回は
package 'nginx' do action :install end
とか書いておく。ちなみにitamaeチートシートは
を確認するのが良いかと。package
はactionに対してinstallを設定すればそのままインストールの命令となる。
②itamaeコマンドを打つ
gem install itamae
でitamaeをインストール後、
itamae ssh --vagrant --host ホスト名 -u vagrant -i 秘密鍵のパス recipe.rb
で、VMの仮想環境にrecipe.rbの内容が実行されていく。
なお、ホスト名はvagrantFileのconfig.vm.network "private_network"の値を、秘密鍵のパスは
vagrant ssh-config
で確認できる。
ちなみに、この通りにコマンドを打つともしかすると設定によってはvagrantユーザーではインストール権限とかがなかったりするかもしれないが、その場合はexecute
を使ってコマンド指定で行けばいいと思う。
なお、今回はローカルで実行→仮想環境に対しプロビジョニングという方向で実行したが、
仮想環境にrecipeをマウント→仮想環境上で
itamae local recipe.rb
とかでもいいと思う。でもそれをやるには仮想環境上でrbenvやらrubyやらを入れなきゃいけないので(itamaeを入れるため)、どうせなら1回コマンド叩けば全部やってくれた方が手間少ないよね、ってことで上記方針を取った。
とても簡潔ですが参考までに。