我正在使用 exec 命令运行修改其他包的某些配置文件的 shell 脚本。每当 ip 地址、端口或 url 等输入参数发生变化,或者 shell 脚本本身发生变化时,都会触发 exec 命令。
我必须使用 shell 脚本,因为软件包的配置文件在不同版本之间略有不同。我认为更新每个 sed 脚本的配置文件比为每个特定版本提供不同的 puppet 模板更容易。
但是此配置不会检测到任何配置文件何时在 puppet 之外被修改。Puppet 不知道由 shell 脚本修改的文件。
我正在寻找的是一种使 exec 命令依赖于任意其他文件的校验和的方法:
exec { "my_command.sh":
only_if_file_has_changed => [
"/etc/mysoftware/config.xml",
"/etc/othersoftware/defaults",
]
}
这可能吗?请指教。
它会像这样工作:
这里明显的限制是,文件
/etc/mysoftware/config.xml
也/etc/othersoftware/defaults
必须通过 Puppet 进行更改。如果它们被其他东西(Puppet 外部)改变,请参阅 Felix 的回答。
当然,您也可以订阅
Package['xxx']
或任何其他更合适的依赖项。Puppet 可以通过其审计元参数来解决这个问题。