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

Puppet: запускайте Augeas только при наличии определенного пакета

Я хочу использовать 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 команда.

Я бы согласился с обычным фактом.