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に設定しています。