Назад | Перейти на главную страницу

Заставьте модули разговаривать друг с другом

В настоящее время я работаю над профилем, чтобы заблокировать сервер, убедившись, что службы и пользователи отключены. Например, Apache.

Это создает проблемы, когда другой профиль хочет управлять ресурсом, потому что тогда у меня будет два ресурса Service [apache].

Теперь я мог бы использовать что-то вроде определения, но мой предпочтительный метод - это каким-то образом profile :: apache может общаться с profile :: lockdown и сообщать ему, чтобы он оставил apache в покое.

Я думаю, что вам нужно использовать 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 вы можете манипулировать параметром классов по узлам или чему-то еще