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

проблема имени хоста марионетки

Я искал в Интернете и вижу, что у нескольких человек была эта проблема в других списках / досках. Когда я запускаю sudo puppetd --waitforcert 60 --test во второй раз после подписания сертификата на главном сервере, я получаю эту ошибку:

notice: Got signed certificate
warning: Certificate validation failed; considering using the certname configuration option
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Certificates were not trusted: hostname was not match with the server certificate

Не уверен, что понимаю, в чем проблема и как ее исправить. Вот почему я спрашиваю.

Я устанавливаю марионетку на два сервера в моей локальной сети. Puppetmaster называется «puppet», а другой сервер - «puppetclient». Я поместил марионетку в / etc / hosts на puppetclient.

запуск hostname -f отобразит puppet и pupperclient на соответствующих серверах. Я не знаю, что еще попробовать. У кого-нибудь есть понимание?

Похоже, сертификат puppetmaster был создан, когда хост был назван иначе, чем "puppet". Восстановите сертификат, и все будет хорошо.

Имя, хранящееся в сертификате, должно точно соответствовать тому, к чему вы настроили подключение вашего клиента. Например, если вы настроите свой клиент для подключения к «puppet.domain.com», вы получите сообщение об ошибке, если сертификат будет назван «марионетка», и наоборот.

Если вы хотите использовать DNS CNAME для своего кукловода, вы можете запустить марионеточный мастер, используя:

puppetmaster --certname cname.domain.org

что заставит кукловода использовать cname.domain.org вместо полного доменного имени по умолчанию.

В --certname cname.domain.org вариант флага, похоже, помог мне (на Amazon EC2)

вы можете спросить у facter (facter fqdn) имя хоста и посмотреть, соответствует ли оно тому, что вы ожидаете. Также посмотрите (по умолчанию) / var / lib / puppet / ssl / и посмотрите, как выглядят сертификаты, если у них нет правильных имен хостов, что может быть вашей проблемой. Поскольку марионетка выполняет все коммуникации по HTTPS, она довольно чувствительна к разрешению и именованию хостов.

Перед установкой Puppet на назначенных клиентах и ​​сервере проверьте файл /etc/resolv.conf и убедитесь, что первая запись домена в строке «поиска» - это домен, под которым вы хотите запустить Puppet. Например:

поиск my.puppetdomain.com my.public.domain.com

сервер имен 192.168.1.1 сервер имен xxx.xxx.1.1

На этапе установки Puppet сервер Puppet сгенерирует свои сертификаты на основе первой поисковой записи в /etc/resolv.conf. Я выяснил это на собственном горьком опыте. Если вы видите ошибки, связанные с сертификатом на любом узле марионетки, выполните следующие действия:

1) Отредактируйте /etc/resolv.conf и убедитесь, что первый домен, указанный в строке "поиска", отражает домен, в котором вы хотите запустить Puppet.

2) Удалите puppet (оставьте каталог / etc / puppet без изменений).

3) rm -rf / var / lib / puppet

4) Переустановите Puppet (это создаст новый каталог / var / lib / puppet).

5) Если вы выполняете это на сервере Puppet, запустите / usr / sbin / puppetmasterd --mkusers (или запустите / usr / local / sbin / puppetmasterd --mkusers). Это сгенерирует все необходимые файлы в / var / lib / puppet, включая новые внутренние сертификаты с использованием правильного имени домена.

6) При выполнении этого на клиенте Puppet запустите Puppet в подробном режиме с включенным флагом --waitforcert: puppetd -server .puppetdomain.com --waitforcert 60 --test Этот шаг отправит запрос сертификата на сервер Puppet.

7) На сервере Puppet перечислите ожидающие сертификаты:

puppetca --list

Вы должны увидеть имя хоста клиента Puppet, выполняющего запрос:

puppetclient1.puppetdomain.com

8) На сервере Puppet подпишите сертификат только что указанного клиента Puppet:

puppetca --sign puppetclient1.puppetdomain.com

Тогда все готово.

HTH ....

Разрешаются ли и puppet, и puppetclient в DNS? Если нет, вы можете отредактировать файл / etc / hosts, чтобы сопоставить IP-адреса и имена хостов. IIRC, вам нужно сделать это только на клиенте.