Это с Puppet 5.5.22 и Foreman 1.22.0-develop. Я знаю, что это устаревшая установка Foreman и Puppet, но пока я не заменю их новыми версиями (скоро предстоящий проект), мне придется иметь дело именно с ними.
# puppet agent -tv
Notice: Local environment: 'production' doesn't match server specified node environment 'development', switching agent to 'development'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Notice: Local environment: 'development' doesn't match server specified environment 'test', restarting agent run with environment 'test'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for servername.example.com
Info: Applying configuration version '1694623566'
Notice: Applied catalog in 12.93 seconds
Я понимаю, что исходная локальная среда 'production' может быть либо из /etc/puppet/puppet.conf, либо является средой по умолчанию, если в этом файле не указано никакой среды. В этом случае это последнее (среда не указана локально).
Среда узла «development» была установлена для этого хоста в Foreman (ENC или внешний классификатор узлов для этой установки Puppet) и является желаемым правильным назначением среды.
Среда «тест» — это среда, которую Foreman устанавливает в широком смысле для всех наших хостов в данный момент, и это среда, в которой находился этот конкретный хост до того, как я изменил его через пользовательский интерфейс Foreman на «разработка». (Другими словами, «тест» — это на самом деле наша производственная среда; среда, называемая «производство», в данный момент не используется.)
Я попытался обратиться к документации Foreman, но не нашел ничего об основах работы назначений среды; документация представляла собой лишь обзор пользовательского интерфейса, который бесполезен для устранения неполадок.
Вероятно, это связано с тем, что здесь есть еще одна странность: servername.example.com появляетсядваждыв пользовательском интерфейсе Формана.
Власть | Имя | Операционная система | Кукольная среда | Модель | Группа хостов | Последний отчет | Действия |
---|---|---|---|---|---|---|---|
[прялка] | имя сервера | Debian [версия] | разработка | [имя_блейд-сервера] | имя_группы_хостов | [пустой] | [Кнопка «Изменить»] |
[значок питания, серый] | имя сервера | Debian [версия] | тест | Стандартный ПК [информация о версии] | [пустой] | 6 минут назад | [Кнопка «Изменить»] |
Если я попытаюсь изменить среду для любой записи, нажав кнопку «Изменить», то при нажатии кнопки «Отправить» рядом с полем «Имя» появится красная надпись «уже занято», как будто я пытаюсь создать новую запись хоста.
Однако если вместо этого я выберу хост с флажком слева от списка, а затем перейду наверх и выберу «Выбрать действие» -> «Изменить среду», то этопоявляетсядля работы. Затем обе записи показывают "development" в пользовательском интерфейсе. Но следующий запуск Puppet на servername даст вывод, показанный в верхней части этого поста, а затем после этого обновления пользовательского интерфейса Foreman снова покажет одну запись с "development" и одну запись с "test".
Что может быть причиной этого? Как мне назначить хосты средам и заставить их работать?
решение1
Я решил эту проблему.
В нашей настройке Puppet есть некоторая идиосинкразия, заключающаяся в том, что где-то все еще есть некий затянувшийся остаток конфигурации Puppet 3 — не уверен, где именно, но запись сервера в списке, которая вернется к "тестовому", также показала своего puppet master как старый сервер puppet. Тот сервер puppet больше не существует, НО новый сервер foreman также имеет это имя. Довольно сложно, и я не совсем понимаю, откуда взялись две разные записи, но я исправил назначение flapping-окружения следующим образом:
- Удаление обеих записей хоста в пользовательском интерфейсе Foreman (обязательно внимательно прочитайте сообщение с подтверждением и убедитесь, что это НЕ приведет к удалению хоста(ов) или дисков, и что в подтверждении указаны только две предполагаемые записи хоста).
- На сервере puppet (т.е. войдя на сервер Foreman через командную строку), запустите
puppet cert clean servername.example.com
- На servername.example.com удаление каталога
/var/lib/puppet/ssl/
(я использовалfind /var/lib/puppet/ssl/ -delete
, хотя этоrm -rf /var/lib/puppet/ssl/
сработает так же хорошо.) - На servername.example.com отредактируйте файл,
/etc/puppet/puppet.conf
чтобы установитьenvironment = development
под[agent]
заголовком. - Повторный запуск puppet на servername.example.com с
puppet agent -tv
.
Это позволило правильно применить код из среды разработки без каких-либо предупреждений о несоответствующих средах, а пользовательский интерфейс Foreman теперь отображает только одну запись для этого сервера и правильно указывает, что его среда — development
.