makotan _at_ gmail dot com

DataBagsの使い方

マニュアルを見てるとsensitiveな値を入れるようになってて、たとえばDBのユーザIDとかパスワードとか接続先とかそんなのを入れるためのもの
マニュアルは http://docs.opscode.com/essentials_data_bags.html
重要なポイントは、暗号化してしまえばキーを持ってないとChef-ServerにアクセスしてもDataBagsの中身が判断できないって事。
そしてChefで暗号処理できる項目を持てるのはChefの中で唯一DataBagsだけ



当然のことながら、環境毎にDBの接続先は変わるのでDataBagsにも環境設定を入れる必要がある
お勧めの方法はこんな風にすること
DATA_BAG_NAMEをプロダクト名
ITEMを環境名


こうするとこんな風に値を取得できて環境が変われば値の取得元も変わる

Chef::EncryptedDataBagItem.load("productname", node.chef_environment, secret)

あとはマニュアルに書いてるとおりにすれば結構簡単に動く
http://docs.opscode.com/essentials_data_bags_encrypt.html


実は環境のキーとかをどうやって各サーバに置くかって言う方が問題なわけで、そこは悩ましいところだけど実サーバへのアクセス制限くらいは普通にやってるよね!