Вложение пользовательских ресурсов в шеф-повар - PullRequest
0 голосов
/ 11 марта 2020

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

customResource A
property component_id String

action: doSomething do
  component_id = 1 if component_id.nil?
  node.default[component_details][component_id] = ''

  customResource_b "Get me component details" do
    comp_id component_id
    action :get_component_details
  end

  Chef::log.info("See the output computed by my customResourceB")
  Chef::log.info(node[component_details][component_id])
end

Обратите внимание: 1. Роль customResource_b состоит в том, чтобы сделать вызов PS для веб-службы REST и сохранить результат JSON в узле [component_details ] [component_id] переопределяет его значение. Я создаю этот атрибутный узел на этом ресурсе, так как знаю, что он будет использоваться позже, поэтому я избегаю проблем во время компиляции.

Проблемы, с которыми я сталкиваюсь: 1. При тестировании простого рецепта, который вызывает этот ресурс в chef- клиент, код в ресурсе выполняется до последней строки журнала и после этого выполняется вызов customResource_b. Это то, чего я не ожидаю.

Буду признателен за любой совет. Я также новичок в Chef, поэтому любые улучшения дизайна также приветствуются

1 Ответ

0 голосов
/ 14 марта 2020

нет необходимости вкладывать ресурсы шеф-повара, лучше использовать шеф-повар idompotance , охранник и уведомление .

и, как обычно, вы всегда можно использовать условие, чтобы решить, какую кулинарную книгу \ рецепт запустить.

...