2015-11-03 54 views
0

Ohai厨师。使用厨师保险箱代替数据包

我写了一个将usename和password作为参数的定义。 在配方中使用时,它的参数从数据包中取出。

但是它

下面是使用数据包的代码取出由厨师穹顶参数时失败:

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 

但是,当我尝试对厨师库执行相同操作时,它会失败,因为定义检查NIL值的输入。 在我看来,数据包在编译时进行评估,并在避难所项目执行。

如果我想让它工作,该怎么办? 有没有办法强制在编译时发生库项评估?

下面是使用拱顶从而未能代码:

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 

所以我得到的例外是 “退出 - 零值unaxceptable为connectProfiletoLdap”

+0

什么错误,你看到(在那里抱怨说,它是NIL} –

+0

我已经更新,并显示错误的问题。 如果其中一个值为零 –

+0

而我假设你已经检查过节点['was'] ['credentialsVault']'肯定包含一个字库名称? –

回答

0

为了用c在这样的问题,可以使用下面的旁路描述下一个场景HEF金库: 重写definion作为LWRP

重写定义厨师LWRP,exapmle可以在这里找到接近尾声:Chef Definitions documentation

后从厨师金库给予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