我想使用 Augeas 来修改“/etc/inittab”,但这应该只在安装包“sysvinit”时发生。该软件包不受 Puppet 控制(也不应该)。
来自 Augeas 的“onlyif”似乎无法检查除 Augeas 之外的任何内容,id Augeas 无法检查文件是否存在。
有没有办法在不创建自定义事实的情况下实现这一目标?
我想使用 Augeas 来修改“/etc/inittab”,但这应该只在安装包“sysvinit”时发生。该软件包不受 Puppet 控制(也不应该)。
来自 Augeas 的“onlyif”似乎无法检查除 Augeas 之外的任何内容,id Augeas 无法检查文件是否存在。
有没有办法在不创建自定义事实的情况下实现这一目标?
编写一个Augeas 提供程序并将其限制在检查包是否存在的事实中。
把它们加起来:
sysvinit_package
事实,带有值true
或false
(甚至是包版本)inittab
仅限于事实的类型和提供者。注意:
augeasproviders
API 正在重做,以便在augeasproviders
模块之外轻松创建提供程序。例如,请参阅shellvar 独立提供程序(目前是 PoC,API 最终可能会以这种方式工作)。或者,如果您只想使用
augeas
类型而不是编写提供程序(尽管我会推荐),您可以只编写一个事实并在 Puppet DSL 中使用它以避免在未安装augeas
时声明资源。sysvinit
一个可怕的替代方案是放弃
augeas
资源类型以exec
运行资源,并在命令augtool
中检查包。onlyif
我会选择习惯的事实。