Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 使用chef vault代替数据包_Chef Infra_Chef Recipe_Databags - Fatal编程技术网

Chef infra 使用chef vault代替数据包

Chef infra 使用chef vault代替数据包,chef-infra,chef-recipe,databags,Chef Infra,Chef Recipe,Databags,大海厨师 我编写了一个以usename和password为参数的定义。 当在配方中使用从数据库获取的参数时,它可以工作 但是,从chef vault获取参数时失败 以下是使用数据包的代码: databag = 'credentials' authalias = data_bag_item(databag, ldapalias) username = authalias[node['was']['credentialsUsername']] password = authalias[node['w

大海厨师

我编写了一个以usename和password为参数的定义。 当在配方中使用从数据库获取的参数时,它可以工作

但是,从chef vault获取参数时失败

以下是使用数据包的代码:

databag = 'credentials'
authalias = data_bag_item(databag, ldapalias)
username = authalias[node['was']['credentialsUsername']]
password = authalias[node['was']['credentialsPassword']]
然后将它们传递给我的定义,这很好

connectProfiletoLdap 'ldapmain' do
 profile  dmgrProfile 
 baseDN  'dc=mydomain,dc=com'
 bindDN  username
 binpwd  password
 ldapServer  'LDAPPROD.mydomain.com'
end
但是,当我尝试对chef vault执行相同操作时,它失败了,因为定义正在检查输入的NIL值。 在我看来,数据包在编译时进行评估,而vault项在执行时进行评估

如果我想让它工作,我该怎么办? 是否有方法强制vault项评估在编译时进行

以下是使用Vault失败的代码:

 vault = node['was']['credentialsVault']
 authalias = chef_vault_item(vault, ldapalias)
 username = authalias[node['was']['credentialsUsername']]
 password = authalias[node['was']['credentialsPassword']]

 connectProfiletoLdap 'ldapmain' do
  profile  dmgrProfile 
  baseDN  'dc=mydomain,dc=com'
  bindDN  username
  binpwd  password
  ldapServer  'LDAPPROD.mydomain.com'
 end
如果其中一个参数为null,它将引发代码中的异常 这是定义中的代码:

  if params[:baseDN].nil? or params[:ldapServer].nil? or params :profile].nil? or params[:bindDN].nil? or params[:binpwd].nil?
   raise "Exiting - nil values are unaxceptable for connectProfiletoLdap"
  else
    ......
  end
所以我得到的例外是
“退出-零值对于connectProfiletoLdap是不可接受的”

为了在问题中描述的场景中使用chef vault,可以使用以下旁路: 将定义改写为LWRP

将定义改写为chef LWRP,最后可在此处找到示例:

之后,从chef vault中提供给LWRP的数据在收敛时间内进行评估,如下所示:

 ldapalias = 'ldap-matam'
 vault = node['was']['credentialsVault']
 authalias = chef_vault_item(vault, ldapalias)
 username = authalias[node['was']['credentialsUsername']]
 password = authalias[node['was']['credentialsPassword']]

 wasbnhp_ldapconnection 'LDAP MAIN' do
  profile  dmgrProfile 
  baseDN  'dc=mydomain,dc=com'
  bindDN   username
  binpwd   password 
  ldapServer  'LDAPPROD.mydomain.com'
 end

你看到了什么错误(它抱怨它是NIL}我已经用这个错误更新了这个问题。如果其中一个值是NIL,我的代码就会引发异常,我假设你已经检查了这个节点['was']['credentialscault']'是否确实包含vault名称的字符串?是的。问题是在编译时获取的数据包和在中的vault会收敛。