opscodeのwindows cookbooksを使う方法
windows Cookbook - Chef Supermarket
opscode-cookbooks/windows · GitHub
Windows仮想OSに対して、VagrantのProvisionでChefのレシピを実行するための手順といいますか、お作法が分かったので備忘録しておきます。
Project/ |- Vagrantfile |- cookbooks/ |- chef_handler/ |- windows/ |- my_recipe/ |- metadata.rb |- recipes |- default.rb
こんな感じのフォルダ構成にして、windowsフォルダにOpscodeで公開されている便利レシピをとってきて、呼び出す感じです。
1. Vagrantfileの作成
2. Windows Cookbookのダウンロード
3. metadata.rbの作成
4. recipeの作成
5. vagrant up
詳細は、以下ぁ~
- 作者: Mitchell Hashimoto,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/02/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (18件) を見る
1. Vagrantfileの作成
Vagrantfileは、こんな感じ。
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "Win2012R2" config.vm.box_url = "Win2012R2.box" # vagrant-omnibus config.omnibus.chef_version = :latest config.vm.network "forwarded_port", guest: 3389, host: 13389 config.vm.network "forwarded_port", guest: 5985, host: 5985, id: "winrm", auto_correct: true config.vm.provision "chef_solo" do |chef| chef.cookbooks_path = "cookbooks" chef.custom_config_path = "Vagrantfile.chef" chef.run_list = [ "my_recipe" ] end end
ポイントは、winrmのポートフォワードにIDつけてるところと、chefにVagrantfile.chefをcustom_config_pathに指定してるところ。
このあたりは、
Vagrant で作ったり壊したりできる Windows 環境を手に入れるまでの手順 - てっく煮ブログ
こちらを、とてもとても参考にさせていただきました。
すぺしゃるさんくすです。
2. Windows Cookbookのダウンロード
OpscodeからCookbookをとってきます。
とりかたは、いろいろあるけど、今回は、ふつーにGitHubからDLしてきて解凍しておいたった。
opscode-cookbooks/windows · GitHub
と、Windows Cookbookは、chef_handlerに依存しているので、こいつも取ってくる。
opscode-cookbooks/chef_handler · GitHub
3. metadata.rbの作成
で、この記事で一番だいじなこと言います。
depends "windows"
って書いたmetadata.rbを my_recipe フォルダの直下に作ります。
このmeta情報を書くことで、my_recipe にWindows CookbookのResourceを呼ぶことができるようになって、あんなことやこんなことを、できちゃう。
4. recipeの作成
で、まあ、今回はサンプルなので、かるい内容のレシピを書いときます。
cookbooks/my_recipe/recipes/default.rb
windows_batch "Add hoge to hoge.txt" do code <<-EOH echo "hoge" >> C:/hoge.txt EOH end
みたいな。
こんな単純なWindowsコマンドなんだけど、これ一つ実行さすのでも、実はChefを使わない場合、けっこう面倒なんだよね。
で、windows_batchもじゅうぶん強力なResourceですが、なんといっても一番の目玉は、windows_packageでしょうね。
これさえ実行できれば、そこそこのWIndows Installerは実行できちゃうんじゃないか。
そんな期待を持っています。
このあたりは、これからもそっと調べていく予定。