Chefのrecipeを書いてみる その3 -recipeを分割してみる編-

前回書いた,Chefのrecipeを書いてみる その2 -recipeからインストールするversionを指定してみる編-に引き続きchefのrecipeを順を追って書いていきます.今日は,recipeを分割してみようと思います.

Recipeを分ける

現時点のrecipeを実行すると,mysql-connectorのrecipeも実行されてしまいます. もし,MySQLではなく他のDBを使っていた場合,これはインストールしたくないと思います. そのため,この部分を別のrecipeに分けて,必要に応じてインストールするように変更します.

flyway-cli/recipes/mysql-connector.rb の作成

mysql-connectorのrecipeを作成します.作り方はdefault.rbとほとんど変わりません. ついでに,jarファイルにシンボリックリンクを貼るのを忘れてたので追加.

execute "mysql-connector" do
  command <<-EOH
     wget http://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.26.tar.gz -P /tmp
     tar xzfC /tmp/mysql-connector-java-5.1.26.tar.gz /opt/flyway/flyway/jars
     ln -nfs /opt/flyway/flyway/jars/mysql-connector-java-5.1.26/mysql-connector-java-5.1.26-bin.jar /opt/flyway/flyway/jars//mysql-connector-java-5.1.26-bin.jar
  EOH
end

chef-repo/localhost.json

msql-connectorをlocalhost.jsonに追加します. cookbook名の後ろに::をつづけてrecipe名を指定することが出来ます.

{
  "run_list" : [
    "recipe[flyway-cli]",
    "recipe[flyway-cli::mysql-connector]"
  ]
}

まとめ

今回は,今まで一緒になっていたrecipeを分けました.これでrecipeを使う人が必要に応じて指定することが出来便利になりました.

Chefのrecipeを書いてみる一覧

参考文献