Serverkitを利用してVagrantの構成管理を行う

Vagrantで扱う環境の構成管理には、ChefやAnsibleが利用できます。この記事では、それに代わり Serverkit を利用して構成管理を行う方法について説明します。

プラグインをインストールする

標準の状態ではVagrantはServerkitのことを知りませんが、vagrant-serverkit というプラグインをインストールすることで、Serverkitを利用して構成管理を行えるようになります。プラグインをインストールするには、vagrant plugin install ${PLUGIN_NAME} のようにコマンドを実行します。インストールされているプラグインを一覧するには、vagrant plugin list というコマンドを実行します。

$ vagrant plugin install vagrant-serverkit
$ vagrant plugin list
vagrant-serverkit (0.0.4)

Vagrantfileを用意する

例として、ubuntu/trusty64 という名前で公開されている Ubuntu 14.04 のBoxを手元のVirtualBoxで起動し、recipe.yml に書かれたレシピ通りの状態をServerkitで構築する、という内容のVagrantfileを用意して実行してみます。

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision :serverkit do |serverkit_config|
    serverkit_config.recipe_path = "recipe.yml"
  end
end
resources:
  - type: package
    name: curl
  - type: package
    name: nginx

起動してみる

Vagrantでは、手元にVagrantfileがあればその内容を見て vagrant up で適切な環境が起動できます。その際、上記の例のように provision の設定が書かれていれば、初回起動時はその設定を見ながらProvisionが実行されます。これで環境構築は完了ですので、vagrant ssh などのコマンドを利用して構築した環境にログインしてみましょう。

$ vagrant up

レシピを変更して再度適用する

vagrant up では初回起動時しかProvisionが行われませんが、起動後にレシピの内容を変更して適用したい場合があるかもしれません。その場合、vagrant provision というコマンドが利用できます。

$ vagrant provision

おまけ: プラグインはどこからくるの

先述した例では、vagrant-serverkit の version 0.0.4 がインストールされています。VagrantのプラグインはGem形式で記述され、rubygems.org で公開されています。vagrant-serverkitも、https://rubygems.org/gems/vagrant-serverkit でGemとして公開されていることが確認できます。逆に言えば、Gem形式でコードを記述して rubygems.org で公開すれば、Vagrant用の独自のプラグインを公開できます。Vagrantのプラグインをつくる方法については公式でドキュメントも用意されているので、もしVagrantで利用できる仕組みを思い付いた場合は、プラグインを使ってみるのも良いと思います。