Chef infra 厨师库与用户食谱(用户管理资源)

Chef infra 厨师库与用户食谱(用户管理资源),chef-infra,chef-recipe,chef-vault,Chef Infra,Chef Recipe,Chef Vault,我打算用chef提供的“用户”数据包加密“用户”数据包,并将其用于chef提供的“用户”。“users”cookbook提供的“users\u manage”资源接受其中一个属性作为“databag”(带有用户名、组id和搜索组属性)。 据我所知,chef vault允许您一次解密一个项目 vault = chef_vault_item(:mydatabbag, ‘item1’) 理想情况下,我希望chef vault提供类似的功能来解密整个vault(加密的数据包),并且我可以将其传递给“u

我打算用chef提供的“用户”数据包加密“用户”数据包,并将其用于chef提供的“用户”。“users”cookbook提供的“users\u manage”资源接受其中一个属性作为“databag”(带有用户名、组id和搜索组属性)。 据我所知,chef vault允许您一次解密一个项目

vault = chef_vault_item(:mydatabbag, ‘item1’)
理想情况下,我希望chef vault提供类似的功能来解密整个vault(加密的数据包),并且我可以将其传递给“uses_manage”资源:

decrypted_data_bag = chef_vault(:mydatabbag) #Something similar

users_manage "#{search_group}" do
  group_id search_group
  action [ :remove, :create ]
  data_bag "#{decrypted_data_bag}"
end
由于chef vault不提供对整个数据包进行解密的功能,我剩下的唯一解决方案是在循环中调用“users\u manage”并传递每个项(作为散列)


有更好的解决方案吗?

属性是数据包的名称,而不是数据包本身。您不能在chef vault中使用
users\u manage
,您必须自己编写类似的内容


这就是说,用户对象中的任何内容首先都不需要是私有的,除非您试图设置密码或其他东西(不要这样做),所以这可能是不需要的。

data\u bag属性是数据包的名称,而不是数据包本身。您不能在chef vault中使用
users\u manage
,您必须自己编写类似的内容


这就是说,用户对象中的任何内容首先都不需要是私有的,除非您试图设置密码或其他东西(不要这样做),所以这可能是不需要的。

谢谢@coderanger。我需要在用户对象中存储ssh密钥和密码,因此需要加密。不要使用Chef分发用户密码,请查看LDAP之类的内容,Chef应该为大多数用户设置的唯一密钥应该是公钥,即
授权的\u密钥
,这不需要保密。+1这只是一个临时解决方案,直到我们进入LDAP。PS:似乎已经有了同样的公共关系:谢谢@coderanger。我需要在用户对象中存储ssh密钥和密码,因此需要加密。不要使用Chef分发用户密码,请查看LDAP之类的内容,Chef应该为大多数用户设置的唯一密钥应该是公钥,即
授权的\u密钥
,这不需要保密。+1这只是一个临时解决方案,直到我们进入LDAP。PS:似乎已经为相同的项目打开了PR:
mydatabag.each do |myuser|
  decrypted_user = vault = chef_vault_item(:mydatabbag, "#{myuser}")
  users_manage "#{search_group}" do
    group_id search_group
    action [ :remove, :create ]
    data_bag "#{decrypted_user}"
  end
end