Puppet: запускать Augeas только при наличии определенного пакета
Я хочу использовать Augeas для изменения "/etc/inittab", но это должно происходить только тогда, когда установлен пакет "sysvinit". Этот пакет не находится под контролем Puppet (и не должен быть).
"Onlyif" из Augeas, похоже, не способен проверять что-либо, кроме Augeas, id Augeas не может проверить, существует ли файл.
Есть ли способ достичь этого без создания собственного факта?
2 ответа
Напишите провайдеру Augeas и ограничьте его фактом, который проверяет наличие пакета.
Подвести итог:
- Напиши
sysvinit_package
факт, со значениемtrue
или жеfalse
(или даже версия пакета) - Напишите тип и провайдера для
inittab
который ограничен фактом.
Обратите внимание augeasproviders
API переделывается, чтобы легко создавать провайдеров вне augeasproviders
модуль. См., Например, автономный поставщик shellvar (PoC на данный момент, API, вероятно, будет работать таким же образом).
В качестве альтернативы, если вы просто хотите использовать augeas
введите вместо того, чтобы писать провайдера (хотя я бы порекомендовал), вы можете просто написать факт и использовать его в Puppet DSL, чтобы избежать объявления augeas
ресурс когда sysvinit
не установлен
Ужасной альтернативой будет угробление augeas
тип ресурса для exec
ресурс работает augtool
и проверка пакета в onlyif
команда.
Я бы пошел с обычным фактом.