vagrant-omnibusで簡単Chef Client/Chef Soloインストール

 2013/05/26
このエントリーをはてなブックマークに追加

Vagrantを使ってインスタンスを作成し、Chef Provisionerで自動でパッケージをインストールしたり設定をする、というのが定石の流れです。

しかし、インスタンスの雛形であるboxにChef ClientやChef Soloがインストールされていない場合、このインストールを自分でしないといけないのは面倒の極みです。 そもそも設定するためにインスタンスにログインして設定を追加してからプロビジョニングするのはアホくさいですし、自動化された処理を走らせるために手動で面倒くさい処理をするというのはナンセンスです。

これを解決するには2つのアプローチがあります。

  • Chef Client/ Chef Soloをインストールした上でインスタンスを再度box化して次回以降も使えるようにする
  • Vagrantを起動するときにChef Client/Chef Soloがインストールされていなければ自動でインストールする

今回紹介するのは後者で使うツールで、Vagrantの起動時にインスタンスの中にChef Client/Chef Soloが存在するか、期待しているバージョンかを確認し、該当しない場合は、Chefのオムニバスインストーラーを使って、インスタンスに自動でインストールを行うものです。

インストール

ソースコードはgithubで公開されています。 が通常ソースコードを取得する必要はなく、以下のコマンドでインストールできます。

vagrant plugin install vagrant-omnibus

インストールが完了したら念のため、プラグインの一覧を表示させて確認します。

vagrant plugin list

使い方

使い方は簡単です。新たにconfig.omnibus.chef_versionの箇所にバージョン番号か、または:latestを設定すると自動でインストールされます。:latestを指定した場合は自動で最新バージョンがインストールされます。 このプラグインはChefのオムニバスインストーラーを叩いているので、インストール可能な環境は以下になるはずです(Windowsはこのプラグインでは無理だと思います)。 Debian, Redhat Enterprise Linux, Mac OSX, SUSE, Solaris, OpenSUSE, Ubuntu 詳細は、http://www.opscode.com/chef/install/ を確認してください。

なお、この動作に際しては、起動したインスタンスの中で、sudoがttyなしで実行できることが必要です(Vagrant本体に野良パッチをあてるとこの制約を外せるのですが、それはまた別途)。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "<your_box_name_here>"
  config.vm.network :private_network, ip: "192.168.33.33"

  config.omnibus.chef_version = "11.4.0"

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "./cookbooks"
    chef.add_recipe "apache"
  end
end

Vagrantを起動すると以下のように表示されるはずです。

(略)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Ensuring Chef is installed at requested version of 11.4.4.
[default] Chef 11.4.4 Omnibus package is not installed...installing now.
Downloading Chef 11.4.4 for ubuntu...
Installing Chef 11.4.4
Selecting previously unselected package chef.
(Reading database ... 51095 files and directories currently installed.)
Unpacking chef (from .../chef_11.4.4_amd64.deb) ...
Setting up chef (11.4.4-2.ubuntu.11.04) ...
Thank you for installing Chef!
[default] Configuring and enabling network interfaces...
(略)

なお、このプラグインはvirtualboxに限らず、他のProviderでも動作します(ということでvagrant-awsプラグインと組み合わせるとなかなか素敵)。

 2013/05/26
このエントリーをはてなブックマークに追加

サイト内検索


著作

寄稿

Latest post: