ubuntu – 仅当资源存在于Puppet中时才依赖于资源

前端之家收集整理的这篇文章主要介绍了ubuntu – 仅当资源存在于Puppet中时才依赖于资源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在节点上启用防火墙的类(在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"]]
  }
}

这很好.在我包含该类的节点上,启用了防火墙.

然后我有另一个类,用于启用OpenSSH:

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.

原文链接:https://www.f2er.com/ubuntu/348027.html

猜你在找的Ubuntu相关文章