Я искал в Интернете и вижу, что у нескольких человек была эта проблема в других списках / досках. Когда я запускаю 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, вам нужно сделать это только на клиенте.