【问题标题】:How to provide a startup service file in Puppet如何在 Puppet 中提供启动服务文件
【发布时间】:2018-03-09 16:46:57
【问题描述】:

我们有 RedHat 7.2 Linux 操作系统并使用 puppet 来执行我们的任务。我正在使用 puppet 安装一些软件,它运行良好,现在最后一步是创建操作系统级别的服务。在早期版本的 RHEL 中,我们使用 chkconfig,但它已被 systemctl 取代。当然,执行此任务的推荐方式是使用服务。由于这是一个自定义软件,我有自己的启动脚本,我通常将其复制到 /etc/init.d,运行 chkconfig,然后启动服务。如何通过 Puppet for RedHat 7.2 OS 执行这些任务?我只想创建服务(而不是启动它或任何东西)。这样,当服务器重新启动时,服务将启动应用程序。

编辑:

@redstonemercury for RHEL 7 我认为需要以下内容。但是你的建议肯定有帮助,因为我也是这么想的。

https://serverfault.com/questions/814611/puppet-generated-systemd-unit-files

file { '/lib/systemd/system/myservice.service':
  mode    => '0644',
  owner   => 'root',
  group   => 'root',
  content => template('modulename/myservice.systemd.erb'),
}~>
exec { 'myservice-systemd-reload':
  command     => 'systemctl daemon-reload',
  path        => [ '/usr/bin', '/bin', '/usr/sbin' ],
  refreshonly => true,
}

【问题讨论】:

    标签: puppet


    【解决方案1】:

    在 puppet 中,使用包资源来安装包(假设它在你已经声明的 repos 中),然后使用文件资源来声明 /etc/init.d 文件,并将 require => Package[<package_resource_name>] 作为文件声明中的参数,以确保在安装包后创建自定义文件(因此不会被包的 /etc/init.d 文件覆盖)。例如:

    package { 'mypackage':
        ensure => present,
    }
    
    file { '/etc/init.d/mypackage':
        ensure  => present,
        content => template('mypackage/myinitd'),
        require => Package['mypackage'],
    }
    

    这是如果您想使用模板。对于文件,而不是内容使用源:source => puppet://modules/mypackage/myinitd

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多