木偶:只有在存在特定包的情况下才能运行Augeas

我想使用Augeas来修改“/ etc / inittab”,但只有在安装了“sysvinit”软件时才会发生这种情况。 该包不受Puppet控制(不得)。

Augeas的“onlyif”似乎不能检查Augeas的其他东西,id Augeas无法检查文件是否存在。

有没有办法实现这一点,而不创build一个自定义的事实?

写一个Augeas提供商,并将其限制在一个事实中 ,检查包的存在。

把它们加起来:

  • 写一个sysvinit_package事实,值truefalse (甚至包版本)
  • 写一个types和供应商的inittab是限于事实。

注意: augeasproviders API正在重做,以便在augeasproviders模块之外轻松创build提供程序。 例如,请参阅shellvar独立提供程序 (现在,PoC可能最终会以这种方式工作)。

另外,如果你只是想使用augeastypes而不是写一个提供者(我会推荐这个),你可以写一个事实并在Puppet DSL中使用它来避免在没有安装sysvinit时声明augeas资源。

另一个可怕的select是抛弃运行augtoolexec资源的augeas资源types,并在augtool命令中检查包。

我会去与自定义的事实。