Как создать зависимость между двумя задачами в поваренной книге шеф-повара?
Я написал поваренную книгу шеф-повара, которая настраивает сервер в компании.
Одной из задач является установка "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{}
помощник по всему файлу прочитал.