例えば
MHA用の鍵とかをchefで配ってるんだが、 生fileとして配布はかっこ悪い。
なんか暗号化とか出来ないのかなーと探してみたらちょうどいいのがあった。
knife-solo_data_bag
公式にも書いてる
さっくり使えるようになる所まで書いていく
準備
#install
#
# gem install knife-solo_data_bag
#
#秘密鍵準備
#
# openssl rand -base64 512 > .chef/data_bag_key
#
#knifeのconfig
#
# cat .chef/knife.rb
cookbook_path ["site-cookbooks"]
node_path "nodes"
role_path "roles"
environment_path "environments"
data_bag_path "data_bags"
encrypted_data_bag_secret ".chef/data_bag_key"
data_bag編集
# editor指定
#
# export EDITOR=vim
#
# 鍵を使って編集
#
# knife solo data bag create kakeru kaeru --secret-file .chef/data_bag_key
{
"id": "kaeru",
"kakeru_key": "-----BEGIN DSA PRIVATE KEY-----\nhogehoge"
}
# こんな感じでjson_fileを編集
# 作れたかしら?
#
# cat data_bags/kakeru/kaeru.json
{
"id": "kaeru",
"kakeru_key": {
"encrypted_data": "EYapYk8BKax0HwfWhd2Px9IG/cWxQ9LRpeXPZirnUPuH8dtIvIyP3+pm2EcC\nUapBJSsyQSDQr3QLKmNWsj7bBg==\n",
"iv": "GvVOtBO3WnM81jxbz3iGKw==\n",
"version": 1,
"cipher": "aes-256-cbc"
}
}
み!
見えへん!!!!!!!!!!!
ちなみに、もう一回編集したいならこう
knife solo data bag edit kakeru kaeru
どうやってrecipeから呼び出すの?
kaeru = Chef::EncryptedDataBagItem.load("kakeru", 'kaeru')
kaeru_key = kakeru['kakeru_key']
こんな感じ
後はお好きに使う感じで