chef cookbook 紹介シリーズ(2): python

明日と明後日、多摩の方で開催される OSC 2013 Tokyo/Spring に参加してきます。
Sphinx-users.jp のブースにいるので、興味がある人は声をかけてください。
というわけで、普段の出勤時間より早く起きなくちゃいけないというのに、
今日もこつこつブログを書くことにします。

お手軽に cookbook 紹介第2段ということで、今日は python cookbook を紹介します。
今、ちょうどお仕事で python を使っているのでこれは非常に重要な cookbook だったりします。

使い方

python cookbook は run_list に追加しておくだけで、

  • python のインストール
  • pip のインストール
  • virtualenv のインストール

をやってくれます。

{
  "run_list" : [
    "recipe[python]"
  ]
}

通常だと OS のパッケージを使うのですが、大抵古いものがインストールされます。
RedHat 系では EPEL を使ってやや新しいものを入れることができますが、
新しいバージョンが必要な場合は install_method オプション、version オプションを使ってソースからインストールするとよいでしょう。

{
  "python" : {
    "install_method" : "source",
    "version" : "2.7.3",
    "checksum" : "c57477edd6d18bd9eeca2f21add73919"
  },
  "run_list" : [
    "recipe[python]"
  ]
}

python_pip and python_virtualenv

python cookbook では python_pip と python_virtualenv という resource を提供しています。
これを利用することでライブラリや virtualenv 環境を作ることができます。

例えば、mercurial を pip でインストールするには、自分のレシピの中で

include_recipe "python"

python_pip "mercurial" do
  action :upgrade
end

のように書くことで最新版の mercurial をインストールすることができます。*1

また、もうひとつの python_virtualenv はこんな風に利用します。

include_recipe "python"

python_virtualenv "/home/tk0miya/some_app" do
  action :create
  owner "tk0miya"
  group "tk0miya"
end

python_pip "mercurial" do
  action :install
  virtualenv "/home/tk0miya/some_app"
end


この python cookbook は python を利用した環境を作る際に必須の cookbook です。
python 製のツールを入れる際も、新しいバージョンのものを使うために python_pip も欠かせません。
自分で python 関連の何かを入れる際に、是非使ってみてください。

*1:この内容は mercurial cookbook に mercurial::pip として含まれています。