因条件

时间:2016-10-29 12:00:22

标签: puppet

我有一个管理firewalld的木偶模块,包括创建/etc/firewalld目录并将自定义服务xml文件添加到/etc/firewalld/services

enabled="true"的依赖顺序是

Package["$package_name"] -> File['/etc/firewalld'] -> Service["$service_name"]

然后在我有的服务添加功能

define firewalld_zone_add_service($zone, $service) {
  exec { "firewalld_${zone}_add_service_${service}":
    path    => '/bin:/usr/bin:/sbin:/usr/sbin',
    command => "firewall-cmd --permanent --zone=${zone} --add-service=${service}",
    unless  => "firewall-cmd -q --permanent --zone=${zone} --query-service=${service}",
    notify  => Exec['firewalld_reload'],
    require => [Exec["firewalld_zone_create_$zone"],
                File['/etc/firewalld'],
                File['/etc/firewalld/services/networker.xml'],
                File['/etc/firewalld/services/snmpd.xml'],
               ]
  }
}

这一切都运行正常,但当我将其设置为enabled="false"并按此设置顺序时

Service["$service_name"] ->  File['networker'] -> File['snmpd'] -> File['/etc/firewalld'] -> Package["$package_name"]

我遇到了依赖循环错误。如果没有这种排序,它会先删除目录(及其内容),然后收到错误unable to set $file_ensure on file,因为它不存在。

所以我的问题是,如何管理此循环或将$file_ensure设置为enabled="false"为null,以便在目录删除同时删除托管配置时不尝试设置任何内容文件。

我已尝试设置$file_ensure = undef,但似乎没有做任何事情。

谢谢。

0 个答案:

没有答案