首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新启动其他类的服务,同时依赖于另一个类,会创建一个依赖循环

重新启动其他类的服务,同时依赖于另一个类,会创建一个依赖循环
EN

Stack Overflow用户
提问于 2015-03-25 20:05:28
回答 1查看 288关注 0票数 0

在木偶中,我有以下两个班级:

代码语言:javascript
复制
class zabbix-agent {
    package { 'zabbix-agent': }
    ->
    service { 'zabbix-agent':
        ensure => running
    }
}

class zabbix-agent-cassandra {
    include zabbix-agent
    Class['zabbix-agent']
    ->
    file { '/etc/zabbix/zabbix_agent.conf.d/cassandra.conf':
    }
    ~>
    Service['zabbix-agent']
}

这看起来很不错,因为它允许从任何类向/etc/zabbix/zabbix_agent.conf.d/添加新的配置文件,并在执行此操作时重新启动zabbix-agent。

然而,这有一个依赖循环:

代码语言:javascript
复制
Service[zabbix-agent] => Class[Zabbix-agent] => File[/etc/zabbix/zabbix_agentd.conf.d/cassandra.conf] => Service[zabbix-agent]

有没有办法避免依赖循环?

EN

回答 1

Stack Overflow用户

发布于 2015-03-25 21:41:41

你是在告诉木偶

  • 管理zabbix包和服务
  • 在管理配置文件之前执行此操作
  • 如果配置文件发生更改,请管理服务(再次)

这是有问题的,因为Puppet只会接触每个资源一次。

最好的方法可能是为您的zabbix模块引入更多的结构。

代码语言:javascript
复制
class zabbix::agent {
    include zabbix::package
    include zabbix::service
    Class['zabbix::package'] -> Class['zabbix::service']
}

这允许您只需

代码语言:javascript
复制
Class['zabbix::package'] -> File[...] ~> Class['zabbix::service']

它是DRYer,在您的特定情况下,它避免了循环依赖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29255191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档