Я написал поваренную книгу Chef, в которой настраивается сервер в компании.
Одна из задач состоит в том, чтобы установить «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.
Как установить зависимость между задачами?
Проблема в том, что, как вы написали, чтение файла происходит во время компиляции. Проверять, выписываться https://coderanger.net/two-pass для получения подробной информации о том, как это исправить, но вкратце вам нужно использовать lazy{}
помощник по чтению файла.