Puppet-开始不工作前需要服务包

Puppet-开始不工作前需要服务包,puppet,puppet-enterprise,Puppet,Puppet Enterprise,Puppet试图在清除包时启动服务 作为测试,我配置了要清除的包。但是服务部分正在尝试启动zabbix代理服务。知道哪里出了问题吗 package { 'zabbix-agent': name => $service_name, ensure => purged, } service { 'zabbix-agent': name => $service_name, ensure => running, enable =

Puppet试图在清除包时启动服务

作为测试,我配置了要清除的包。但是服务部分正在尝试启动zabbix代理服务。知道哪里出了问题吗

  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代理-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

当您强制执行
zabbix代理
以运行时,您还需要包,因此您的包强制执行需要
存在

package{'zabbix agent':
name=>$service\u name,
确保=>存在,
}
服务{'zabbix代理':
name=>$service\u name,
确保=>正在运行,
enable=>true,
require=>Package['zabbix-agent'],
订阅=>文件['zabbix-agentd.conf'],
}
如果您还希望具有
清除
的功能,则可采用不同的类别(例如:

class zabbix::purge{
包{'zabbix代理':
name=>$service\u name,
确保=>已清除,
}
服务{'zabbix代理':
name=>$service\u name,
确保=>false,
}
}

因此,不能将两个类强制到同一节点,因为不能同时使服务处于两种状态:
运行
清除

,Puppet代码将指示Puppet代理清除
zabbix代理
包,然后启动
zabbix代理
服务。这就是also您所声称的正在发生。您期望的区别是什么?我原以为只有在包要求存在的情况下,服务部分才会运行。但事实并非如此。服务部分似乎不知道包状态的任何信息,但它只知道包部分是否完成(在本例中,清除包)然后服务部分继续启动服务。