首页 > 解决方案 > Puppet - 在开始不工作之前需要服务包

问题描述

清除程序包时,Puppet 正在尝试启动服务。

作为测试,我配置了要清除的包。但是服务部分正在尝试启动 zabbix-agent 服务。知道出了什么问题吗?...

  package { 'zabbix-agent':
    name => $service_name,
    ensure => purged,
  }

  service { 'zabbix-agent':
    name => $service_name,
    ensure => running,
    enable => true,
    require => Package['zabbix-agent'],
    subscribe => File['zabbix-agentd.conf'],
  }

puppet agent -t输出:

Error: Could not start Service[zabbix-agent]: Execution of '/bin/systemctl start zabbix-agent' returned 5: Failed to start zabbix-agent.service: Unit zabbix-agent.service not found.
Error: /Stage[main]/Zabbix/Service[zabbix-agent]/ensure: change from stopped to running failed: Could not start Service[zabbix-agent]: Execution of '/bin/systemctl start zabbix-agent' returned 5: Failed to start zabbix-agent.service: Unit zabbix-agent.service not found.
Notice: Finished catalog run in 0.25 seconds

标签: puppetpuppet-enterprise

解决方案


当你强制zabbix-agent运行时,你还需要包,所以你的包强制需要是present.

  package { 'zabbix-agent':
    name   => $service_name,
    ensure => present,
  }

  service { 'zabbix-agent':
    name      => $service_name,
    ensure    => running,
    enable    => true,
    require   => Package['zabbix-agent'],
    subscribe => File['zabbix-agentd.conf'],
  }

如果您还想拥有 的能力purging,那将属于不同的类别(例如:

class zabbix::purge {
  package { 'zabbix-agent':
    name   => $service_name,
    ensure => purged,
  }

  service { 'zabbix-agent':
    name   => $service_name,
    ensure => false,
  }
}

因此,您不能将两个类强制到同一个节点,因为您不能同时在两种状态下拥有服务:running并且purged.


推荐阅读