如何在Puppet中提供启动服务文件

如何在Puppet中提供启动服务文件,puppet,Puppet,我们有RedHat 7.2 Linux操作系统,并使用puppet来执行我们的任务。我正在使用puppet安装一些软件,这些软件运行良好,现在最后一步是创建操作系统级服务。在RHEL的早期版本中,我们使用了chkconfig,但它已被systemctl取代。当然,执行此任务的推荐方法是使用服务。因为这是一个自定义软件,所以我有自己的启动脚本,我通常将其复制到/etc/init.d,运行chkconfig,然后启动服务。如何通过Puppet for RedHat 7.2操作系统执行这些任务?我只想

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

编辑:

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


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


如果要使用模板,请使用源代码:
source=>puppet://modules/mypackage/myinitd

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

如果要使用模板,请使用源代码:
source=>puppet://modules/mypackage/myinitd

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,
}
package { 'mypackage':
    ensure => present,
}

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