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»
Какой ошибки вы видите (где он жалуется, что NIL} –
Я обновил этот вопрос с ошибкой. Это мой код, если один из значений равен nil –
И я предполагаю, что вы проверили, что этот узел ['был'] ['credentialsVault'] 'определенно содержит строку имени хранилища? –