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

Функция «Run Puppet» в Foreman работает некорректно.

Во-первых, краткий обзор нашей установки:

  1. У нас есть экземпляр Foreman, который работает нормально, назовем его мастером.
  2. Хозяин марионеток работает хорошо, назовем его мастером марионеток.
  3. Есть два хоста, с которыми можно связаться от бригадира и марионеточного мастера без межсетевых экранов, назовем их хост-а и хост-б.
  4. Все хосты работают под управлением 3.x

Мы начали расширять использование Foreman и хотим включить кнопку Run Puppet. Я следил за вики и заставил его работать в начальных тестах. Однако при дальнейшем тестировании кнопка дала очень противоречивые результаты. Кажется, я помню, как читал, что по умолчанию при запуске запускается 2-минутный интервал, но проблема не в этом. Иногда, когда я нажимаю кнопку, хост сразу же подскакивает и начинает бег. Однако в большинстве случаев он никогда не запускает бег.

В конфиге sudoers у Foreman есть следующее:

Defaults:foreman-proxy !requiretty
foreman-proxy   ALL = NOPASSWD: /usr/bin/puppet kick *

Хосты имеют следующее в auth.conf, пустое пространство именauth.conf и listen = true в puppet.conf.

# allow foreman to start puppet runs
path /run
auth any
method save
allow foreman.domain.lan

При попытке запустить запуск Puppet через Foreman это отображается в производственном журнале.

Started GET "/hosts/host-a.domain.lan/puppetrun" for 192.168.8.48 at 2014-07-15 21:44:59 +0000
Processing by HostsController#puppetrun as HTML
  Parameters: {"id"=>"host-a.domain.lan"}
Redirected to http://foreman.domain.lan/hosts/host-a.domain.lan
Completed 302 Found in 48ms (ActiveRecord: 1.3ms)


Started GET "/hosts/host-a.domain.lan" for 192.168.8.48 at 2014-07-15 21:44:59 +0000
Processing by HostsController#show as HTML
  Parameters: {"id"=>"host-a.domain.lan"}
  Rendered hosts/_overview.html.erb (16.2ms)
  Rendered hosts/_metrics.html.erb (0.3ms)
  Rendered hosts/show.html.erb within layouts/application (734.1ms)
  Rendered home/_user_dropdown.html.erb (2.0ms)
Read fragment views/tabs_and_title_records-2 (0.2ms)
  Rendered home/_topbar.html.erb (3.8ms)
  Rendered layouts/base.html.erb (5.9ms)
Completed 200 OK in 781ms (Views: 652.3ms | ActiveRecord: 108.6ms)

И это все, запуск Puppet иногда запускается на хостах, но не всегда. Любые идеи?

РЕДАКТИРОВАТЬ: я должен добавить, что, когда триггеры запуска не работают, на стороне хоста не появляются сообщения при запуске марионеточного агента --no-daemonize --debug

РЕДАКТИРОВАНИЕ MOAR: Запуск Foreman v1.5.1 плюс Puppet 3.6.2 на марионеточном мастере и мастере, v3.3.1 на хостах.

Я пробовал несколько способов надежно запустить пинк, но не смог, и он все равно устарел, поэтому я перешел на puppetssh. Это потребовало настройки SSH-ключей smart-proxy, пользователя foreman-proxy и его прав sudo. По этому методу запуска марионетки не так много документации, а запись в журнал DEBUG в foreman-proxy не включает никаких командных выходных данных, поэтому было трудно определить, где и как что-то не удалось.

По умолчанию у пользователя foreman-proxy нет оболочки (на RHEL), и он не сможет запустить / usr / bin / ssh. Простой usermod -s / bin / bash помог, но мне это кажется угрозой безопасности. Кроме того, для его запуска необходимы разные права sudo, поэтому мне пришлось изменить foreman-proxy ALL = NOPASSWD: / usr / bin / puppet kick к foreman-proxy ALL = NOPASSWD: / usr / bin / ssh. После этого оставалось только настроить команду ssh.

В моем случае мы развернули учетную запись пользователя и ключи SSH для запуска команд Puppet с sudo на клиентских машинах. Я скопировал закрытый ключ в какое-то место, где его мог использовать foreman-proxy (например: / etc / foreman-proxy / puppetssh / id_rsa), и настроил параметры puppetssh в /etc/foreman-proxy/settings.yml следующим образом:

:puppetssh_command: /usr/bin/sudo /usr/bin/puppet agent -t --no-usecacheonfailure
:puppetssh_user: puppetssh
:puppetssh_keyfile: /etc/foreman-proxy/puppetssh/id_rsa

это сработало для меня, я выбрал марионеточный источник http://theforeman.org/manuals/1.11/index.html#4.3.6Puppet

следуйте этой инструкции из приведенной выше ссылки под содержимым puppetssh теперь отредактируйте следующую строку в файле.

/etc/foreman-proxy/settings.d/puppet.

:puppetssh_command: /usr/bin/puppet agent --onetime --no-usecacheonfailure

преобразовать это в

:puppetssh_command: /usr/bin/puppet agent --test

теперь он будет работать как шарм, не стесняйтесь отвечать, если это не сработало, ура