Во-первых, краткий обзор нашей установки:
Мы начали расширять использование 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
теперь он будет работать как шарм, не стесняйтесь отвечать, если это не сработало, ура