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

Puppet не подписывает сертификаты

Я создал тестовую лабораторию для марионетки, но она не работает. я начинаю puppet agent на узле и ждет сертификата.

root:~# puppet agent --server xxxx --waitforcert 60 --test
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session

На Сервере теперь находятся ожидающие запросы сертификатов:

root:~# puppet cert --list                                                                                                        
root:~#

В журнале masterhttpd:

root:~# tail /var/log/puppet/masterhttp.log
[2012-01-06 09:19:17] xxx - - [06/Jan/2012:09:19:17 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:17] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw

Файл сертификата не найден.

Похоже, вы подтвердили, что агент добирается до хозяина. Хороший первый шаг.

Затем, как предлагали другие, убедитесь, что сертификат не был подписан и вы просто не пропустили его:

sudo puppet cert --list --all

Если вы не видите его там, я бы вычистил все и начал заново.

Сначала убедитесь, что дата и время на обоих серверах синхронизированы. Вы можете принудительно синхронизировать NTP с чем-то вроде ntpd -q -g, в зависимости от вашего дистрибутива и клиента NTP.

Затем запустите clean на кукловода:

sudo puppet cert clean <agent hostname>

На агенте очистите все ваши файлы SSL:

sudo rm -rf /var/puppet/ssl /var/lib/puppet/ssl/ /var/puppet/ssl 

Наконец, запустите тест:

sudo puppet agent --debug --test --server <master hostname>

Надеюсь, если это не решит проблему, это должно дать вам некоторые подсказки относительно того, где искать.

Я столкнулся с очень похожими проблемами, когда только начал работать с Puppet. Параметр --server не соблюдался.

Попробуйте добавить запись в файл HOSTS с именем «марионетка» и IP-адресом вашего главного ящика.

Если это сработает, следующий синтаксис работает хорошо (по крайней мере, для версии 2.7.5)

[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
server = puppetmaster.yourdomain.org
pluginsync = true

[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster.yourdomain.org
listen = true

Я рекомендую вам запустить марионеточного агента как

$ puppet agent --server=xxxx --test --debug

эта команда даст вам более подробную информацию о том, почему она не работает. Кроме того, вам может потребоваться больше времени для его завершения.

Вы также можете попробовать удалить сертификат со сторон, если таковые имеются (на главном и на агенте соответственно)

puppet --cert --clean your_machine_name

rm -rf /etc/puppet/ssl