疲れてたので適当ですが。。(cookbookはちょっとずつ良くしてゆけば良いと思います。1歩でも先に進むのが正しいということで)。そういう環境を用意してくれたvagrantには本当に感謝です。
さて、始めます。
knife-soloの環境が整っていることが前提です。あと、CentOS6.4で実行してます。Pythonの勉強を始めたくて、python3が欲しかったんだけど、CentOSはデフォで2.6.6だったし、yum update python3とかでもできなかったので調べました
1. cookbookを作成します
chefリポジトリのルートで下記のコマンドを実行します。
knife cookbook create python -o site-cookbooks/
2. 最新版のpythonをdlしてくる。
保存先は/site-cookbooks/python/files/default/
の下。
Releases を見る。現時点では3.3.3が最新だったので下記のように書いた。
cd python/files/default wget http://www.python.org/ftp/python/3.3.3/Python-3.3.3.tar.bz2
3. レシピを書く
/site-cookbooks/python/recipes/default.rb
に記述
%w(openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel).each do |pkg| yum_package pkg do action :install end end cookbook_file "/tmp/Python-3.3.3.tar.bz2" do source "Python-3.3.3.tar.bz2" mode 0644 end bash "install python" do cwd "/tmp" code <<-EOH tar -xjf /tmp/Python-3.3.3.tar.bz2 cd /tmp/Python-3.3.3 ./configure make make install EOH end
4. nodeを編集
hostname.jsonのrun_listに追加する。
{ "run_list":[ "recipe[python]" ] }
既に他のがリストにあったら、配列に追加。
- コード中の[python][/python]の部分を投稿しようとすると、どうしても消えてしまう(なぜ??)ので、[と]は全角にしてあります。コピペできません。コピペされる方は[]を半角にしてください。
5. さて、動くか!
knife solo cook *hostname*
...
うお!一発成功!
参考にしたページ
- Howto- Install Python 3.x in Ubuntu, Debian, Fedora & Centos | Unixmen
- CentOS 6.4でchef soloとknife soloを使ってphp実行環境を構築 | もふもふ部@CAW
書き書き後記。。
参考の2番目にあるサイトを見て、見よう見まねで作成してみましたが、なんとかうまく言ったようです。いろいろわかってないこともありますが、とにかく、わからない部分がわかってよかった。
- phpは
/usr/local
に指定してるけど、pythonはインストール先指定しなかったらどうやら/usr/local/lib
にインストールされた。これがデフォらしいけど、/usr/localにしたほうが良いのかな、、とか - yumとかベースを作る部分はyumのみのcookbook作ったりしたほうが良いのかな(調べてたらそういう人もいた)とか、、
- shellはきっと既にあっても上書きで実行されるから、参考2番目のサイトを参考に
not_if
とかやったほうがいいんだろうな。。とか。
いやー、でも楽しかった(成功したから言える)。
一応、chefは単に環境を作るという意味だけではなく、それやりながら自分でも色々学びたいと思って使ってる。なので、できるだけ配布されてるcookbookをそのまま利用するのではなく、自分でグチャグチャでも書いてみようと思ってる。今日はちょうどよい参考資料も見つかって、なんか良かった。
cookbook楽しいなー。commit して寝よ。
*)当方python, chef初心者です。おかしな記述があったら教えていただけると助かります。