我有一个在节点上启用防火墙的类(在Ubuntu中使用ufw):
class ufw { package { ["ufw"]: ensure => latest } exec { "enable-firewall": command => "/usr/bin/yes | /usr/sbin/ufw enable",unless => "/usr/sbin/ufw status | grep \"Status: active\"",require => [Package["ufw"]] } }
这很好.在我包含该类的节点上,启用了防火墙.
class openssh { package { "openssh-server": ensure => latest } service { ssh: enable => true,ensure => running,require => [Package["openssh-server"]] } exec { "allow-openssh": command => "/usr/sbin/ufw allow OpenSSH",unless => "/usr/sbin/ufw status | grep \"OpenSSH.*ALLOW.*Anywhere\\|Status: inactive\"",require => [Package["ufw"],Exec["enable-firewall"]] } }
正如您所看到的,它不仅可以启用OpenSSH,还可以为其打开防火墙.问题是当OpenSSH用于没有防火墙的服务器时.在那里我得到:
warning: Configuration Could not be
instantiated: Could not find
dependency Package[ufw] for
Exec[allow-openssh] at
/etc/puppet/manifests/classes/openssh.pp:19;
using cached catalog
有没有办法要求资源,以便它首先执行,但如果它不存在,只需将当前资源放在一起?
我会在同一个清单中单独执行一个类:
class openssh::ufw { exec { "allow-openssh": command => "/usr/sbin/ufw allow OpenSSH",Exec["enable-firewall"],Package["openssh-server"],Service["ssh"]] } }
当ssh和ufw都在那里时你要包括哪个,或者总是当ufw不在那里但是让openssh上课时它应该是bork.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。