平台独立清单,用于安装和运行apache2或httpd

mi

我需要写一个清单,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上分配

除了修复之外,您还可以使用选择器来进一步改善此功能。此外,还建议构建的依赖servicepackage在该清单以确保适当的排序。刷新也将有所帮助。

考虑到这些修复和改进,您的最终清单将如下所示:

$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章