我有一个管理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
,但似乎没有做任何事情。
谢谢。