使模块相互通信

使模块相互通信

我目前正在开发一个配置文件,通过确保服务和用户被禁用来锁定服务器。例如,Apache。

当另一个配置文件想要管理资源时,就会出现问题,因为那时我将拥有两个 Service[apache] 资源。

现在我可以使用类似 define 的东西,但我更喜欢的方法是让 profile::apache 与 profile::lockdown 对话并告诉它不要管 apache。

答案1

我认为您需要使用 hiera 来存档您想要的内容。

class profiles::apache {
  class { '::apache': }
}

现在,如果我的类profiles::apache开始用于 1000 个节点,并且我想在某个特定服务器中停止服务,那么在 hiera 中我可以使用类似这样的方法。

hiera 3 配置示例 hiera.yaml

---
:backends:
  - yaml
  - json
:yaml:
  :datadir: "/etc/puppetlabs/code/environments/%{::environment}/hieradata"
:json:
  :datadir: "/etc/puppetlabs/code/environments/%{::environment}/hieradata"
:hierarchy:
  - "nodes/%{::trusted.certname}"
  - "virtual/%{::virtual}"
  - "common"

现在/etc/puppetlabs/code/environments/production/hieradata/nodes/servername.domain.local.yaml插入这个apache::service_ensure: stopped

使用 hiera,你可以通过节点或其他东西来操纵类的参数

相关内容