要安装的平台独立清单和 运行 apache2 或 httpd
Platform Independent Manifest to install and run apache2 or httpd
我需要写一个清单作为 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,
}
}
}
用于执行的命令:
puppet apply install-apache.pp --logdest /root/output.log
这里的问题是您正在利用事实 $facts['os']['name']
,它分配给了特定的发行版操作系统,而不是发行版的系列。该事实将在 Ubuntu 而不是 Debian
上分配 Ubuntu
。事实需要固定为 $facts['os']['family']
,它将在 Ubuntu 上分配 Debian
。
除了修复之外,您还可以使用 selectors 对此进行更多改进。还建议在该清单中构建 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,
}
我需要写一个清单作为 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,
}
}
}
用于执行的命令:
puppet apply install-apache.pp --logdest /root/output.log
这里的问题是您正在利用事实 $facts['os']['name']
,它分配给了特定的发行版操作系统,而不是发行版的系列。该事实将在 Ubuntu 而不是 Debian
上分配 Ubuntu
。事实需要固定为 $facts['os']['family']
,它将在 Ubuntu 上分配 Debian
。
除了修复之外,您还可以使用 selectors 对此进行更多改进。还建议在该清单中构建 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,
}