Chefで環境毎に読み込む設定ファイルを変えたい場合

Chefで環境毎、テスト環境、本番環境という意味です、に設定値を変えたい場合があります。
その場合どうするかというとenvironmentを使うと良いと思います。

1.まずはnode以下のファイルを編集します。

{
  "run_list": [
    "yum::epel",
    "hoge::ap"
  ],
  "environment": "product"
}

ここの「environment: "product"」に注目です。ここではproductという環境を指定しています。
では次にenvironment/product.jsonをみてみましょ

{
  "name": "product",
  "description":"This is it",
  "chef_type": "environment",
  "json_class": "Chef::Environment",
  "default_attributes": {
    "common": {
      "environment": {
        "hoge_db": {
          "database": "hoge_db",
          "host": "192.168.***.**",
          "username": "hoge",
          "password": "hoge123",
          "port": "3306"
        }
      }
    }
  },
  "override_attributes": {}
}

上記のように記載します。
では、ここで設定した内容をrecipeで使ってみましょう。

environment = node['common']['environment']

# DB setting
db_database = environment['hoge_db']['database']
db_username = environment['hoge_db']['username']
db_password = environment['hoge_db']['password']
db_host     = environment['hoge_db']['host']
db_port     = environment['hoge_db']['port']

bash "add db setting to .bashrc" do
  user "hoge"
  cwd  "/home/hoge"
  code <<-EOH
echo "" >> .bashrc
echo "# hoge_db setting" >> .bashrc
echo "export DB_NAME='#{db_database}'" >> .bashrc
echo "export DB_USERNAME='#{db_username}'" >> .bashrc
echo "export DB_PASSWORD='#{db_password}'" >> .bashrc
echo "export DB_HOST='#{db_host}'" >> .bashrc
echo "export DB_PORT='#{db_port}'" >> .bashrc
echo "export no_proxy=192.168.***.**"
EOH
  not_if "grep izumo /home/hoge/.bashrc"
end

上記の例ではenvironmentの内容を読み込んで、.bashrcに設定しています。