Шеф-повар: удаленный файл не может уведомить Выполнить или Ruby_Block - PullRequest
0 голосов
/ 02 октября 2019

Привет, ребята. Я работаю над фрагментом кода ниже. Я пробовал различные комбинации с, я не могу позвонить manage_auth или авторизованный_пользователь_ldap из RemoteFile

Я могу уведомить manage_auth или authorized_users_ldap из ruby_block "manage_operator", но не из RemoteFile

Я хочу активировать любой из 2 ( manage_auth или авторизованный_users_ldap ), если manage_operator_flag равен 1Таким образом я попытался поместить уведомление на remote_file, но это не срабатывает. Пожалуйста, дайте мне знать, что я делаю неправильно

ruby_block "manage_auth" do
  block do
    Chef::Log.info("MANAGE AUTH")
  end
  action :nothing
end

ruby_block "manage_operator" do
  block do
    manage_operator_flag = (cfg.fetch("manage.operators", 0) == 1)
    if (manage_operator_flag) then
      f =  Chef::Resource::File::RemoteFile.new("#{node['ucms']['dir']}/bin/ucms_authorized_users_ldap.json", run_context)
      f.source "https://ca.#{c}.#{p}.axiadids.net:4443/ucms_authorized_users_ldap.json"
      f.retries 3
      f.retry_delay 10
      f.ignore_failure true
      # f.run_action :create
      f.action :create
      # f.notifies :run, "execute[authorized_users_ldap]"
      # f.notifies(:run, Chef::Resource::Execute.new("authorized_users_ldap", run_context))
      f.notifies :run, "ruby_block[manage_auth]"
    end
  end
end

execute "authorized_users_ldap" do
  command "touch /tmp/test"
  action :nothing
end

1 Ответ

0 голосов
/ 02 октября 2019

просматривая блок manage_operator ruby, вы должны удалить ключевое слово then, поскольку в ruby ​​такого ключевого слова нет.

изменить:

if (manage_operator_flag) then

на:

if (manage_operator_flag)

и точно так же, как вы это делали в manage_auth блоке ruby, добавьте вывод журнала в блоке условий.

также вы должны определенно выполнить chef-client с более высокой степенью детализации и просмотреть журнал. Вы можете сделать это, добавив --log_level debug к шеф-клиенту , то есть:

$ chef-client --log_level debug

Я бы также порекомендовал вам использовать remote_file ресурс напрямуювместо использования ruby_block для динамического вызова remote_file (во время выполнения \ время конвергенции)

...