奥海厨师。
我写了一个将用户名和密码作为参数的定义。当在带有从数据包中获取的参数的配方中使用时,它可以工作。
但是,从 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 = 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
如果参数之一为空,它会引发我的代码中的异常这是定义中的代码:
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
所以我得到的例外是“Exiting - nil values are unaxceptable for connectProfiletoLdap”