在 puppet 中,如何确定计算机使用的是 systemd 还是 sysvinit?
In puppet, how to I determine if computer is using systemd or sysvinit?
我有一个自定义人偶模块,它安装了一个 daemon/service:一个小的 ruby Webrick。我有一个 start/stop 守护进程的 systemd 脚本。我现在也有一个 Sysvinit 脚本。我想为其中任何一个安装适当的脚本。
我理想的人偶流程是:
- puppet 检测是否正在使用 systemd 或 sysvinit
- puppet 模块然后安装适当的脚本
- 人偶模块启用并确保它是 运行。
这可能吗?
我们是运行人偶4.4.2.
通常的处理方式是使用事实和条件,例如(来自 Elasticsearch Approved 模块):
params.pp:
case $::operatingsystem {
'RedHat', 'CentOS', 'Fedora', 'Scientific', 'OracleLinux', 'SLC': {
$service_name = 'elasticsearch'
$service_hasrestart = true
$service_hasstatus = true
$service_pattern = $service_name
$defaults_location = '/etc/sysconfig'
$pid_dir = '/var/run/elasticsearch'
if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
$init_template = 'elasticsearch.systemd.erb'
$service_providers = 'systemd'
$systemd_service_path = '/lib/systemd/system'
} else {
$init_template = 'elasticsearch.RedHat.erb'
$service_providers = 'init'
$systemd_service_path = undef
}
}
请注意,这是 Puppet 3 兼容代码;如果您想要 Puppet 4 最佳实践并且不需要支持 Puppet 3,请查看关于 facter facts 和 $facts
Hash 的当前最佳实践。
如果您不喜欢根据 OS 版本假设 Systemd 的可用性,您也可以创建一个自定义事实来报告 Systemd 的可用性。
我有一个自定义人偶模块,它安装了一个 daemon/service:一个小的 ruby Webrick。我有一个 start/stop 守护进程的 systemd 脚本。我现在也有一个 Sysvinit 脚本。我想为其中任何一个安装适当的脚本。
我理想的人偶流程是:
- puppet 检测是否正在使用 systemd 或 sysvinit
- puppet 模块然后安装适当的脚本
- 人偶模块启用并确保它是 运行。
这可能吗?
我们是运行人偶4.4.2.
通常的处理方式是使用事实和条件,例如(来自 Elasticsearch Approved 模块):
params.pp:
case $::operatingsystem {
'RedHat', 'CentOS', 'Fedora', 'Scientific', 'OracleLinux', 'SLC': {
$service_name = 'elasticsearch'
$service_hasrestart = true
$service_hasstatus = true
$service_pattern = $service_name
$defaults_location = '/etc/sysconfig'
$pid_dir = '/var/run/elasticsearch'
if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
$init_template = 'elasticsearch.systemd.erb'
$service_providers = 'systemd'
$systemd_service_path = '/lib/systemd/system'
} else {
$init_template = 'elasticsearch.RedHat.erb'
$service_providers = 'init'
$systemd_service_path = undef
}
}
请注意,这是 Puppet 3 兼容代码;如果您想要 Puppet 4 最佳实践并且不需要支持 Puppet 3,请查看关于 facter facts 和 $facts
Hash 的当前最佳实践。
如果您不喜欢根据 OS 版本假设 Systemd 的可用性,您也可以创建一个自定义事实来报告 Systemd 的可用性。