1) chef vaultとは
- chefが提供しているデータの暗号化の仕組み
- なんのデータ?chefが管理するサーバ毎のデータ。
- どんなユースケース?もっともあり得るのはroot passwordの管理をchefサーバでやる時
- chef vaultとは、という内容はchefのdocを読めばわかるけど、普段そんなに使わないので、どう使うのか、はすぐ忘れるのでまとめる
2) 準備
- chefサーバと通信できるknifeコンフィグ(ユーザのpemファイルなどの設定を書いたもの)が必要。
- knifeコマンドでvaultを設定する
3) vaultの作成
knife vault create rp exp1
# rpというvault(data bag)を作成、その中に、exp1というvault itemを作成
knife vault update rp exp1 -A "gggg"
# ggggという名前のadminユーザを追加(chef serverのユーザ名)。あとでvaultアイテムを編集する権限を特定のユーザに付与
export EDITOR=vim
knife vault edit rp exp1
{
"password": "xxx",
"timestamp": "xxxx"
}
# 適当なjson形式のデータを入れる。この場合は、パスワードと日付を入れる。このデータが暗号化される
knife vault create rp exp1 '{"password": "xxxxxx", "timestamp": "xxxxx"}' -S mynodes_password:exp1 -A admin-a, admin-b
# ワンライナーでもできる
# このときSオプションでサーチクエリをセットしておくと便利
knife vault show rp exp1 -Fjson -p all
# 暗号化された情報はadmin権限がある人とrp:exp1が適用されたサーバだけが復号できる
4) サーチクエリ
1.サーバ構築
2.chefで構成管理スタート(このときに、chefのrecipeか何か(roleでもnodeでもなんでもOK)で、例えばattribute{"mynodes_password" : "exp1"}
をサーバに適用する。)
-> すると、さっきvaultに設定したサーチクエリにこのattributeが一致して、vaultがこのサーチクエリでヒットしたサーバに適用できるようになる
5)その他
knife vault refresh/update
# 仮にデータ(この場合はパスワード)が変更になったらvaultをrefresh