研究室から貸与されているLet's note CF-SX2を使っている。開発にはLinuxを使いたいけどWindows環境を捨てるわけにも行かないのでVirtualBoxでUbuntuを立ててずっと使っていたが、Ubuntuに飽きて最近色々試していた。VM立てて環境構築したりするのに、VagrantやChef等の管理ツールするのが便利そうなので、「入門 Chef Solo」を買って進めてる。
環境のせいか何度かハマった。#6がknife-solo導入までのまとめなので、そこを補足する感じでメモ。
(#5まではやってる前提)
環境
- Win7 64bit
- Cygwin 32bit
- Ruby 1.9.3-p448 (apt-cygでインストール)
- VirtualBox 4.2.18
Cygwinが32bitなのは前に64bitでRubyが上手く動かない感じだったから。
あとrbenvでruby入れようとしたら色々おかしい感じで無理そうなのでapt-cygでインストールして使う。
transcode-open/apt-cyg · GitHub
rcmdnk/apt-cyg · GitHub
gem updateしようとすると
-bash: /usr/local/bin/gem: No such file or directory
とか言われて怒られる。alias作るなり、/usr/bin/gemにリンク張ったりするといいと思う。
#6を勧める
Chef Solo 実行の手前までやる。
gitは適宜やって下さい
mkdir vm cd vm vagrant init vagrant ssh-config --host melody >> ~/.ssh/config vagrant up knife solo init chef-repo cd chef-repo knife solo prepare melody knife cookbook create nginx -o site-cookbooks vi site-cookbooks/nginx/recipes/default.rb vi site-cookbooks/nginx/templates/default/nginx.conf.erb vi nodes/melody.json
default.rb
package "nginx" do action :install # option '--enablerepo=epel' end service "nginx" do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end template "nginx.conf" do path "/etc/nginx/nginx.conf" source "nginx.conf.erb" owner "root" group "root" mode 0644 notifies :reload, 'service[nginx]' end
nginx.conf.erb (worker_process ではなく worker_processes なので注意)
user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server { listen <%= node['nginx']['port'] %>; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
melody.json("yum::epel"については後述)
{ "nginx": { "port" : 80 }, "run_list":[ "yum::epel", "nginx" ] }
Opscode Community 登録
本では#6の次の#7でOpscode Communityが紹介されるが、CentOSでnginxインストールしたりするにはパッケージマネージャのリポジトリにEPELを追加する必要があって、それに関して先にOpscode Communityに登録しておく。
ここで
Sign in – Chef
、ユーザ登録したら秘密鍵が表示される。
表示された鍵をコピー →「~/.chef/amagitakayosi.pem」に保存
→「$ chmod 600 ~/.chef/amagitakayosi.pem」
→ ↑のファイルのcygwinパスを「~/chef/kknife.rb」に追加。例↓
client_key '/cygdrive/c/Users/amagitakayosi/.chef/amagitakayosi.pem'
EPEL登録
$ knife cookbook site vendor yum
melody.jsonに"yum::epel"を追加したのは、Chef Solo実行時にEPELを読み込むため。
Chef Solo 実行
knife solo cook melody
できるはず
参考
Chefに入門(3) 〜Webサーバ立ち上げ〜 - Qiita [キータ] Ruby - chef-solo導入メモ - Qiita centosにchefでnginxを入れようとするとこける | iii ThreeTreesLight