我想添加一个只有在 puppet 运行时才应该存在的 puppet 文件。
该文件应该在那里以防止 apt 在我的 puppet 运行期间启动任何服务(失败)。
这是我到目前为止不起作用的类,因为同一文件有重复的声明:
# Opensips package install
class opensips::package {
case $::osfamily {
'Debian' : {
file { 'opensips-enable-apt-policy':
ensure => 'present',
path => '/usr/sbin/policy-rc.d',
mode => '0755',
content => "#!/bin/sh
echo \"All runlevel operations denied by puppet module ${module_name}\" >&2
exit 101
",
} ->
package { $opensips::opensips_debs: ensure => $opensips::package_ensure, } ->
file { 'opensips-disable-apt-policy':
ensure => 'absent',
path => '/usr/sbin/policy-rc.d',
}
}
default : {
fail("Unsupported OS: ${::osfamily}")
}
}
}
这应该给出期望的最终状态的想法,但总结一下:
/usr/sbin/policy-rc.d
用上面的内容创建文件- 运行包安装
- 删除文件
我将如何以最好/最简单的方式做到这一点?
代理是 Debian Jessie,运行 puppet 版本 3.8.1
我试图将元参数放在alias
文件声明成功上。
不幸的是,这不是 Puppet 的设计工作方式 - Puppet 将强制执行已知的系统状态,而不是作为交互式运行的脚本。
做你想做的事情的一种方法是使用
exec
资源来添加/删除文件,并使用本地部署的“源”。示例(不完整,可能不起作用):