【问题标题】:What is the correct way to add a default secret-file to knife.rb?将默认秘密文件添加到 knife.rb 的正确方法是什么?
【发布时间】:2016-12-09 01:29:15
【问题描述】:

在我的 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 上正确加密。

【问题讨论】:

  • 我从厨师支持那里得到了答案,尽管我还没有验证它。希望今天或明天这样做,并回答我自己的问题。如果您对他们早点说的内容感兴趣,请联系我。

标签: chef-infra knife databags


【解决方案1】:

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

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

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

【讨论】:

  • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
  • 感谢@pableiros,我已经更新了原始答案,希望会更好
【解决方案2】:

所以这有点奇怪,但 --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 会自动为您解密。

【讨论】:

  • 当我去查看manage.chef.io上的数据包时,它似乎没有被加密,这就是我认为它没有加密的原因。当我手动通过开关时,它确实在 manage.chef.io 上正确加密。
  • 等等,我想我误解了你。你是说我应该尝试直接设置该配置?
  • 是的,如果您设置knife[:secret_file] 并运行knife data bag from file,它应该在上传时对其进行加密。
猜你喜欢
  • 1970-01-01
  • 2011-06-29
  • 2018-09-15
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
相关资源
最近更新 更多