chef事始め_その2

attributes/default.rb

設定値をまとめておく

default["wp"]["db_user"] = "wpuser"
default["wp"]["db_pass"] = "himitsu_dayo"
default["wp"]["db_host"] = "localhost"
default["wp"]["db_name"] = "wordpress"

recipes/default.rb

ファイル分割してみる

include_recipe "wordpress::install_packages"
include_recipe "wordpress::setup_mysqld"

recipes/setup_mysqld.rb

# mysqlサーバを起動、有効化
service "mysqld" do
  action [:enable, :start]
  supports :start => true, :stop => true, :restart => true, :reload => true
end

# bashで何かするリソース
bash "craete_db" do
  code <<-EOS
    # create table文を mysql に流しこむ
    # db名は↑のattributesで設定する
    echo "create database #{node['wp']['db_name']} charset utf8;" | mysql 
  EOS
  action :nothing
  # ただし、↑のmysqlサーバ起動後、しばらくしてから叩く
  subscribes :run, "service[mysqld]", :delayed
  # すでにDB作成済みならスキップする
  ## not_if command
  ## => commandの終了ステータス(シェル)を評価 => 正常終了(0)だったら実行しない
  ## not_if {command}
  ## => rubyブロックとして評価  => trueだったら実行しない
  not_if "echo 'show databases;'| mysql | grep '#{node['wp']["db_name"]}'"
end