Fork me on GitHub

役立ちぬ開発史、それはただのブログ

覚えておくといい、ブログの時代は終わる。いつかその内、きっとたぶん…

Vagrantを起動するときにChefで設定した仮想環境を構築する方法

| Comments

だいぶ時間が空いてしまいましたが、ChefとVagrantを使った仮想環境の構築の方法について、書きます。ChefとVagrantが何なのか分からない、また使い方を忘れた人は、前回のChef話Vagrant話を見なおしましょう。この仮想環境の構築にはやり方が幾つかありますが、今回はVagrantを起動する際に、cookbookを適用させる方法についてです。

Vagrantを起動するときにcookbookを適用させる方法

Vagrantfileの以下の部分を編集します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 81   # Enable provisioning with chef solo, specifying a cookbooks path, roles
 82   # path, and data_bags path (all relative to this Vagrantfile), and adding
 83   # some recipes and/or roles.
 84   #
 85   # config.vm.provision :chef_solo do |chef|
 86   #   chef.cookbooks_path = "../my-recipes/cookbooks"
 87   #   chef.roles_path = "../my-recipes/roles"
 88   #   chef.data_bags_path = "../my-recipes/data_bags"
 89   #   chef.add_recipe "mysql"
 90   #   chef.add_role "web"
 91   #
 92   #   # You may also specify custom JSON attributes:
 93   #   chef.json = { :mysql_password => "foo" }
 94   # end

まず以下のように、コメントアウトを外して、書き換えます。
Vagrantのディレクトリ内にcookbooksを置いた場合は、chef.cookbooks_path./cookbooksで大丈夫です。knifeコマンドを使って、作成したリポジトリのcookbooksを使いたい場合は、VagrantfileからChefのリポジトリ名までのPATHを書きましょう。
chef.add_recipeに設定するクックブック名ですが、前回のChef話でいうhelloに相当します。どこのクックブックのレシピを追加するのかということなので、knifeを使って作成したクックブック名を設定しましょう

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 81   # Enable provisioning with chef solo, specifying a cookbooks path, roles
 82   # path, and data_bags path (all relative to this Vagrantfile), and adding
 83   # some recipes and/or roles.
 84   #
 85    config.vm.provision :chef_solo do |chef|
 86      chef.cookbooks_path = "/PATH/TO/Chefのリポジトリ名/cookbooks"
 87   #   chef.roles_path = "../my-recipes/roles"
 88   #   chef.data_bags_path = "../my-recipes/data_bags"
 89      chef.add_recipe "クックブック名"
 90   #   chef.add_role "web"
 91   #
 92   #   # You may also specify custom JSON attributes:
 93   #   chef.json = { :mysql_password => "foo" }
 94    end

今回は、前回作成したChefリポジトリを使用しています。なので、cookbooks/hello/recipes/default.rbは、前回のパッケージをまとめてインストールするレシピを実行します。

1
2
3
4
5
%w{zsh gcc make readline-devel}.each do |pkg|
    package pkg do
        action :install
    end
end

以上ができたら、準備は完了です。vagrant upすれば、Chefで設定したzsh gcc make readline-develが、インストールされた仮想環境を構築します。

おわりに

今回の方法を使ったVagrantfileが、夏休みに入る前まで、結構Githubに上がっていたなという印象です。今でも、コレを上げてる人がいるかも。次は、knife-soloをVagrantの仮想環境に使う方法をまとめます。このまま、Berkshelfまで書けるといいなぁ。あと、ansibleというものを教えてもらったので、そのうちでいいから触ってみて、その感想をブログに書きたい。

参考先:

Vagrantで仮想環境をchefで設定する時のアレコレ

Comments