chefでdata_bagの暗号化

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

例えば

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']

こんな感じ
後はお好きに使う感じで