代码之家  ›  专栏  ›  技术社区  ›  user1074593

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

  •  0
  • user1074593  · 技术社区  · 6 年前

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

    编辑:

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

    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,
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   redstonemercury    6 年前

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

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

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