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