我需要写一个清单,install-apache.pp
因为它将安装
apache2
如果是基于Debian的系统或httpd
如果是基于RedHat的系统则打包下面是代码;这在CentOS中有效,但在Ubuntu中不起作用。
case $facts['os']['name'] {
'Debian': {
package { 'apache2':
ensure => installed,
}
service { 'apache2':
ensure => running,
}
}
'RedHat': {
package { 'httpd' :
ensure => installed,
}
service { 'httpd':
ensure => running,
}
}
}
因此,我进行了如下更改,但不确定为什么它不起作用。
case $operatingsystem {
'Debian': {
package { 'apache2':
ensure => installed,
} ->
service { 'apache2':
ensure => running,
enable => true,
}
}
'RedHat': {
package { 'httpd' :
ensure => installed,
} ->
service { 'httpd':
ensure => running,
enable => true,
}
}
}
用于执行的命令:
木偶应用install-apache.pp --logdest /root/output.log
这里的问题是您正在利用$facts['os']['name']
分配给发行版的特定操作系统而不是发行版系列的事实。这个事实将Ubuntu
在Ubuntu上分配,而不是Debian
。该事实需要固定为$facts['os']['family']
,这将Debian
在Ubuntu上分配。
除了修复之外,您还可以使用选择器来进一步改善此功能。此外,还建议构建的依赖service
于package
在该清单以确保适当的排序。刷新也将有所帮助。
考虑到这些修复和改进,您的最终清单将如下所示:
$web_service = $facts['os']['family'] ? {
'RedHat' => 'httpd',
'Debian' => 'apache2',
default => fail('Unsupported operating system.'),
}
package { $web_service:
ensure => installed,
}
~> service { $web_service:
ensure => running,
enable => true,
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句