chef-soloãç¨ãã¦Windowsã«ã½ããã¦ã§ã¢ãã¤ã³ã¹ãã¼ã«ãã¦ã¿ãã
前回ã«å¼ãç¶ããchef-soloãç¨ãã¦Windowsãã·ã¼ã³ã«ã½ããã¦ã§ã¢ã®ã¤ã³ã¹ãã¼ã«ããã¦ã¿ã¾ãã
ä¸åº¦ãã¡ãã¨ããã¬ã·ããä½ã£ã¦ããã¨ãæ°ãããã·ã¼ã³ãæã«å
¥ããã¨ãã«ãchefã®ã¤ã³ã¹ãã¼ã«âãã®ä»ãå
¨é¨å
¥ããã¨ããããã¼ãã§ãã¦ã¨ã£ã¦ã楽ã¡ãã§ããï¼
Windowsåãã®ä¾¿å©ã³ãã³ããã¤ã³ã¹ãã¼ã«ãã
ã¾ã ã¤ã³ã¹ãã¼ã«ãã¦ããªãæ¹ã¯前回の記事ãåèã«ãã¦Windowsåãã®ä¾¿å©ã³ãã³ããã¤ã³ã¹ãã¼ã«ãã¦ããã¦ãã ããã
以ä¸ã®ãããªã³ãã³ãã使ããããã«ãªãã¾ãã
- windows_auto_run
- ã¹ã¿ã¼ãã¢ããã®è¨å®ãã§ãã¾ã
- windows_batch
- ã³ã³ã½ã¼ã«ã³ãã³ãã使ã£ãæä½ãã§ãã¾ã
- windows_feature
- ã³ã³ãã¥ã¼ã¿ã¼ã®ãå½¹å²ã®ç®¡çããè¨å®ã§ãã¾ã
- windows_package
- msiå½¢å¼ã®ã¤ã³ã¹ãã¼ã©ã¼ããªãã·ã§ã³çãæå®ããªããã¤ã³ã¹ãã¼ã«ã§ãã¾ã
- windows_reboot
- ã³ã³ãã¥ã¼ã¿ã¼ã®åèµ·åãå¶å¾¡ãã¾ã
- windows_registry
- ã³ã³ãã¥ã¼ã¿ã¼ã®ã¬ã¸ã¹ããªãã¼ãæä½ã§ãã¾ã
- windows_path
- System Pathã®è¨å®ããã¾ã
- windows_zipfile
- Zipå½¢å¼ã®ãã¡ã¤ã«ã解åãã¾ã
msiå½¢å¼ã®ã½ããã¦ã§ã¢ãã¤ã³ã¹ãã¼ã«ãã
ã¾ãã¯msiå½¢å¼ã®ã¤ã³ã¹ãã¼ã©ã¼ãç¨ããã¤ã³ã¹ãã¼ã«ãè¡ã£ã¦ã¿ããã¨æãã¾ãã
opscodeãå
¬éãã¦ããcookbookã§7-zipãã¡ããã©ãããµã³ãã«ã¨ãªã£ã¦ãã¾ãã®ã§ããã¡ãã使ããã¨ã«ãã¾ãããã
1. opscodeのcookbooksãã7-zipã®cookbookããã¦ã³ãã¼ããã¦å±éãã
ä»åã¯C:\opscode\chef-repo\cookbooks\7-zipã«å±éãã¾ããã
2. 該å½ã®cookbookã使ãããã«è¨å®ãã¡ã¤ã«ãä½ãã¾ãã
> echo . >> c:\opscode\chef-repo\.chef\7zip.json > notepad.exe c:\opscode\chef-repo\.chef\7zip.json
7zip.json
{ "run_list": ["recipe[windows]"] }
3. proxyè¶ãã«ã¤ã³ã¿ã¼ãããã¢ã¯ã»ã¹ãããå¿ è¦ãããå ´åã¯è¨å®ãã¡ã¤ã«ã«è¨è¿°ãã¾ã
> notepad.exe .chef/solo.rb
solo.rb
http_proxy "http://proxy.example.com:80" https_proxy "http://proxy.example.com:80"
4. chef-soloãå®è¡ãã¾ã
> chef-solo -c .chef/solo.rb -j .chef/7zip.json
ã¨ã©ã¼ãåºã¦ããªããã°ã¤ã³ã¹ãã¼ã«æåã§ãã
ãã®ãµã³ãã«ã§ã¯ãã¹ãéãããã«è¨å®ããã¦ãã¾ãã®ã§ã7zipã®ã³ãã³ãã使ããããã«ãªã£ã¦ããã¯ãã§ãã
試ãã«ã³ã³ã½ã¼ã«ãæ°ããç«ã¡ä¸ãã¦ä»¥ä¸ã®ã³ãã³ããå®è¡ãã¦ãã ããã
> 7z --help
ããã§Usageã表示ããããæåã§ãã
zipå½¢å¼ã®ã½ããã¦ã§ã¢ãã¤ã³ã¹ãã¼ã«ãã
ã¤ãã«zipå½¢å¼ã®ã½ããã¦ã§ã¢ãã¤ã³ã¹ãã¼ã«ãã¦ã¿ã¾ããããããã«ã¯ãããµã³ãã«ãç¡ãã®ã§ãèªåã§recipeãæ¸ãã¦ã¿ã¾ãã
ã¤ã³ã¹ãã¼ã«ããã½ããã¦ã§ã¢ã¯Vim-Winã使ãã¾ãã
1. cookbookãä½ã
knifeã§cookbookã®éå½¢ãä½ãã¾ãã
> knife cookbook create vim ** Creating cookbook vim ** Creating README for cookbook: vim ** Creating metadata for cookbook: vim
2. recipeãä½ã
recipes\default.rbãç·¨éãã¦ã¬ã·ããä½ãã¾ããããä»åã¯ä»¥ä¸ã®ãããªããã¼ã§åããå¿
è¦ãããã¾ãã
- zipãã¡ã¤ã«ããã¦ã³ãã¼ããã¦å±éãã
- å±éãããã¤ããªã«ãã¹ãéã
- .vimrcã®éå½¢ãçæãã
ããããã以ä¸ã®ã¯ã©ã¹ã使ãã¾ãã
- windows_zipfile
- windows_path
- template
ä»åã¯ãããªæãã§æ¸ãã¾ããã
recipes\default.rb
#download and install windows_zipfile node['vim']['home'] do source node['vim']['url'] path node['vim']['home'] action :unzip not_if {::File.exists?("#{node['vim']['version']}\\vim.exe")} end # update path windows_path node['vim']['version'] do action :add end # create .vimrc template "#{ENV['USERPROFILE']}\\.vimrc" do source "vimrc.erb" variables({ :syntax => "syntax on", :fileencodings => "utf-8,cp932", :encoding => "cp932", :backspace => "2", :tabstop => "2", :shiftwidth => "2", :softtabstop => "0" }) action :create end
3. attributeãä½ã
recipeã§åç
§ãããã©ã¡ã¼ã¿ã¼ãattributeã«è¨å®ãã¾ããVim-Winã¯32bitçã¨64bitçãããã®ã§ãOSã«ãã£ã¦ã¤ã³ã¹ãã¼ã«ãããã¤ããªãå¤æ´ããå¿
è¦ãããã¾ãã
attributes\default.rb
default['vim']['home'] = "#{ENV['USERPROFILE']}\\bin\\vim" if kernel['machine'] =~ /x86_64/ default['vim']['url'] = "http://vim-win3264.googlecode.com/files/vim73-x64.zip" default['vim']['version'] = "#{ENV['USERPROFILE']}\\bin\\vim\\vim73" else default['vim']['url'] = "http://vim-win3264.googlecode.com/files/vim72-376.zip" default['vim']['version'] = "#{ENV['USERPROFILE']}\\bin\\vim\\vim72" end
4. templateã使ã
.vimrcãã¤ãã§ã«ä½æãã¾ãããã.vimrcã®è¨å®é¨åãerbã«åãåºããrecipeãããã¤ã³ãã§ããããã«ãã¦ããã¨ç®¡çã楽ããããã¾ãããä»åã¯こちらãã.vimrcã®è¨å®ããã¯ããã¦ãããã¾ããã
templates\default\vimrc.erb
<%= @syntax %> set number set fileencodings=<%= @fileencodings %> set encoding=<%= @encoding %> set termencoding=<%= @encoding %> set backspace=<%= @backspace %> set expandtab set tabstop=<%= @tabstop %> set shiftwidth=<%= @shiftwidth %> set softtabstop=<%= @softtabstop %> set smartindent set incsearch
5. chef-soloã§ã¤ã³ã¹ãã¼ã«å®è¡*1
> chef-solo -c .chef\solo.rb -j vim.json
ãã¾ãããã¾ãããï¼èªåç¨ã®cookbooksãä½æãã¦githubãbitbucketãªã©ã«ä¸ãã¦ããã°ãæ°ãã端æ«ã«ãã£ã¨ããéã«éçºç°å¢ãæ´ãããã¨ãã§ãã¾ããæ¯éãã£ã¦ã¿ã¦ãã ããï¼
*1:%USERPROFILE%ã«ãã©ã«ããä½ãã®ã§ã管çè ã¨ãã¦ã³ã³ã½ã¼ã«ãå®è¡ãã¦ãã ãã