向knife.rb添加默认秘密文件的正确方法是什么?

时间:2015-12-15 20:12:52

标签: chef knife databags

在knife.rb中添加秘密文件的正确格式是什么?我read the docs似乎无法正确格式化,或者可能无效。

我尝试过添加两者:

knife[:secret_file] = "/path/to/data_bag_secret"

secret_file "/path/to/data_bag_secret"

当我使用knife data bag create bag key

时,这些似乎都没有加密我的秘密

如果我使用knife data bag create bag key --secret-file /path/to/data_bag_secret,则会正确加密。

当我查看https://manage.chef.io上的数据包时,它似乎没有加密,这就是我认为它不加密的原因。当我手动通过交换机时,它会在https://manage.chef.io上正确加密。

2 个答案:

答案 0 :(得分:1)

tl; dr:如果您使用的是Chef 12+,则另外传入命令行参数--encrypt标志。例如knife data bag from file foo ./data_bags/foo.json --encrypt

从Chef 12开始,您需要在使用--encrypt命令时传递knife data bag [create|from file]标志,以便在knife.rb中使用knife[secret]knife[secret_file配置选项。这里的主要问题是厨师文档尚未更新以表明这一点。如果你致电knife data bag [create|from file] --help,你会看到--encrypt标志选项的解释。

答案来源:https://github.com/chef/chef/issues/3223#issuecomment-93338211

答案 1 :(得分:0)

所以它有点奇怪,但--secret-file没有填充自己的配置值。如果你查看https://github.com/chef/chef/blob/master/lib/chef/knife/data_bag_secret_options.rb#L48,你会看到它运行一个自定义proc,它定义如下。虽然设置knife[:secret_file]仍然有效,但与包加密相关的所有代码都使用两者。一般情况下,您不会使用data bag create来创建初始包/项目。对于常规更新,请使用data bag from file。另请记住,您需要从配置文件中删除该值才能真正查看加密数据,否则knife data bag show会自动为您解密。