Назад | Перейти на главную страницу

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

Я написал поваренную книгу 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{} помощник по чтению файла.