2015-11-03 4 views
0

Ohai шеф-повары.Использование шеф-повара вместо пакета данных

Я написал определение, которое принимает имя пользователя и пароль как параметры. При использовании в рецепте с параметрами, полученными из базы данных, он работает.

Однако это не удается при выборке параметров от шеф-хранилищу

Вот код, используя пакеты данных:

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. Мне кажется, что пакеты данных оцениваются во время компиляции и элементов хранилища при exececute.

Что делать, если я хочу, чтобы это сработало? Есть ли способ заставить данные элементов хранилища произойти во время компиляции?

Вот код, используя своды, которые не удается:

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

Я обновил этот вопрос с ошибкой. Это мой код, если один из значений равен nil –

+0

И я предполагаю, что вы проверили, что этот узел ['был'] ['credentialsVault'] 'определенно содержит строку имени хранилища? –

ответ

0

для того, чтобы использовать гр 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 

 Смежные вопросы

  • Нет связанных вопросов^_^