首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用chef-vault代替数据包

使用chef-vault代替数据包
EN

Stack Overflow用户
提问于 2015-11-03 21:57:49
回答 1查看 187关注 0票数 0

奥海厨师。

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

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

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

代码语言:javascript
复制
databag = 'credentials'
authalias = data_bag_item(databag, ldapalias)
username = authalias[node['was']['credentialsUsername']]
password = authalias[node['was']['credentialsPassword']]

然后将它们传递给我的定义,该定义运行良好

代码语言:javascript
复制
connectProfiletoLdap 'ldapmain' do
 profile  dmgrProfile 
 baseDN  'dc=mydomain,dc=com'
 bindDN  username
 binpwd  password
 ldapServer  'LDAPPROD.mydomain.com'
end

但是,当我尝试对chef-vault执行同样的操作时,它失败了,因为定义是检查输入中是否有NIL值。在我看来,数据包在编译时进行评估,而存储库项目在执行时进行评估。

如果我想让它工作,我应该怎么做?有没有办法强制vault项目求值在编译时发生?

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

代码语言:javascript
复制
 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

它会在我的代码中引发异常,如果其中一个参数为空,这是定义中的代码:

代码语言:javascript
复制
  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

所以我得到的异常是“退出- nil值对于connectProfiletoLdap是不可接受的”

EN

回答 1

Stack Overflow用户

发布于 2015-11-04 15:51:33

为了在问题中描述的场景中使用chef vault,可以使用以下绕过方法:

将定义重写为chef LWRP,示例可以在下面找到:Chef Definitions documentation

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

代码语言:javascript
复制
 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33500978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档