Можно ли уведомить службу на другом хосте с марионеткой? - PullRequest
2 голосов
/ 02 апреля 2019

У меня есть модуль марионеток для хоста-1, который выполняет обмен файлами.

Можно ли проинформировать другого марионеточного агента на хосте-2 (т.е. с уведомлением) об изменениях, внесенных на хост-1?

И если это возможно, что было бы наилучшим практическим способом сделать это?

class fileexchangehost1 {
  file { '/var/apache2/htdocs':
    ensure  => directory,
    source  => "puppet:///modules/${module_name}/var/apache2/htdocs",
    owner   => 'root',
    group   => 'root',
    recurse => true,
    purge   => true,
    force   => true,
    notify  => Service['restart-Service-on-host-2'],
  }
}

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Многие задавали этот вопрос, и в разное время ходили разговоры о реализации функции, позволяющей сделать это возможным.Но это невозможно, и вряд ли будет возможно в ближайшее время.

Экспортированные ресурсы считались ранним решением проблем, подобных этой, хотя некоторые, например здесь утверждали, что это нехорошее решение, и я не вижу, чтобы экспортируемые ресурсы часто использовались в настоящее время.

Я думаю, в настоящее время рекомендуемый подход заключается в том, чтобы сохранить простоту и использовать что-то вроде Puppet Bolt дляпросто запустите команды на узле A, а затем на узле B, в следующем порядке.

Если бы не Puppet Bolt, вы также могли бы использовать преемника MCollective, Choria или даже Ansible для этого.

0 голосов
/ 02 апреля 2019

У Puppet нет прямого способа уведомления службы на одном хосте из манифеста другого.

Тем не менее, вы могли бы использовать экспортируемые ресурсы для этого? Мы используем экспортированные ресурсы с Icinga, поэтому один хост генерирует для себя конфигурацию Icinga, а затем экспортирует ее на сервер Icinga, который перезапускает демон.

Например, на клиентском хосте:

@@file { "/etc/icinga2/conf.d/puppet/${::fqdn}.conf":
  ensure  => file,
  [...]
  tag     => "icinga_client_conf",
}

А на главном хосте:

File <<| tag == "icinga_client_conf" |>> {
  notify  => Service['icinga2'],
}

В вашем случае, по-видимому, не существует экспортируемого ресурса, но даст ли это вам инструменты для создания чего-то, что будет делать то, что вам нужно?

...