Задание Puppet cron - убедитесь, что файлы существуют

Я пытаюсь настроить задачу Puppet cron со следующей структурой:

file { '/usr/local/sbin/file.py':
  mode    => '0755',
  source  => 'puppet:///modules/file.py',
  require => File['/usr/local/sbin']
}

cron { "cronjob":
  require => "ALL_THE_FILES_ABOVE"
  command => "...command_to_run_script..."
  minute => '*/1'
}

Все вышеперечисленное находится в одном файле run_script.pp, Мне интересно, как я могу кодировать require => "ALL_THE_FILES_ABOVE" часть.

Спасибо!

2 ответа

На основании информации, представленной в вашем вопросе, я сделаю предположение, что содержание run_script.pp это много file ресурсы и перечисленные cron ресурс. Вы заявляете, что хотите cron ресурс там требовать все file ресурсы в этом классе. Исходя из этого, вот чистое и эффективное решение.

Есть несколько сложных / продвинутых способов найти чистое и эффективное решение, но самое простое для понимания - использование ресурса по умолчанию: https://puppet.com/docs/puppet/5.3/lang_defaults.html

При этом мы можем установить пары атрибут / значение по умолчанию для всех file ресурсы, содержащиеся в этой области. Это облегчит использование before метапараметр на file вместо ресурсов: https://puppet.com/docs/puppet/5.3/metaparameter.html

Это упрощает решение для одной строки в вашем классе:
File { before => Cron['cronjob'] }

Обратите внимание, что в этом методе будет оговорка: если вы объявляете, запрашиваете или содержите класс в этом манифесте, то это значение по умолчанию может быть расширено до этой "области влияния" и вызвать циклическую зависимость. В этом случае вы должны использовать атрибут ресурса по умолчанию для каждого выражения: https://puppet.com/docs/puppet/5.3/lang_resources_advanced.html

Вы можете использовать несколько требуют

file{'path/foo':}
file{'path/bar':}
file{'~/foobar':
  require => [ File['path/foo'], File['path/bar'] ]
}

или вы можете использовать стрелку заказа

-> (стрелка в порядке; дефис и знак больше чем) - применяет ресурс слева перед ресурсом справа.

 file{'path/foo':} ->
   file{'path/bar':} ->
   file{'~/foobar':}

Вот больше информации об отношениях и порядке в Puppet

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