Как создать зависимость между двумя задачами в поваренной книге шеф-повара?

Я написал поваренную книгу шеф-повара, которая настраивает сервер в компании.

Одной из задач является установка "apt_package" с именем "pssh", а другая задача должна выполняться после установки пакета pssh.

В действительности, вторая задача выполняется перед установкой пакета, а затем запускается программа chef-client, которая сообщает, что соответствующий файл отсутствует - он отсутствует, поскольку его создает установочный пакет pssh.

Я пытаюсь настроить вторую задачу на запуск только после завершения задачи установки пакета.

вот соответствующий код:

apt_package 'pssh' do
  action :install
  subscribes :run, 'file[/usr/bin/pssh]', :before
end

file '/usr/bin/pssh' do
  owner 'root'
  group 'root'
  mode 0755
  content ::File.open("/usr/bin/parallel-ssh").read
  action :create
end

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

Как мне установить зависимость между задачами?

1 ответ

Проблема в том, что, как вы пишете, чтение файла происходит во время компиляции. Проверьте https://coderanger.net/two-pass для деталей, чтобы исправить это, но вкратце вы должны использовать lazy{} помощник по всему файлу прочитал.

Другие вопросы по тегам