Puppet

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску


Puppet

Начал изучать Puppet - здесь шаги и проблемы. Заметки для себя.

Установка

Пробую на убунте, мастер 11.10 клиент 10.04

sudo apt-get install puppet
sudo apt-get install puppet puppetmaster

Натройка

Клиент

[main]
server = mmaxur-pc.kha.domain.net
node_name = cert
certname = workstation

server = mmaxur-pc.kha.domain.net - Тут все ясно
certname = workstation - это имя сертефиката
node_name = cert - уточнить? это тип авторизации

Запускать для теста удобно так:

puppetd --server mmaxur-pc.kha.domain.net   --verbose --test --no-daemonize 
info: Caching certificate_revocation_list for ca
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class passwd1 for maverick at /etc/puppet/manifests/site.pp:10 on node maverick
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Тут выше ошибка в конфиге, потому - не отработало Важно что бы сервер был такой же как в имени сертефиката. Т.е. указать IP вместо mmaxur-pc.kha.domain.net без дополнительных телодвижений нельзя (уточнить КАК)
При успешном запуске:

puppetd --server mmaxur-pc.kha.domain.net   --verbose --test --no-daemonize 
info: Caching catalog for maverick
info: Applying configuration version '1346152612'
info: Creating state file /var/puppet/state/state.yaml
notice: Finished catalog run in 0.07 seconds



Сервер (Мастер)

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

В первой попытке соединиться с мастером клиенту будет отказано по причине отсутствия подписанного SSL сертификата, поэтому, получив отказ, клиент оставит запрос на его получение. Посмотреть список запросов можно с помощью команды:

puppetca --list
# puppetca --list
  "workstation" (D9:72:3F:95:76:C8:42:B2:C6:4A:78:71:F6:BF:9B:47)

Имя - то что вписано на клиенте.

Подписать сертификат и, соответственно, разрешить доступ клиенту можно командой:

puppetca --sign puppet-client.domain

где "puppet-client.domain" - имя клиента.

puppetca --sign workstation
notice: Signed certificate request for workstation
notice: Removing file Puppet::SSL::CertificateRequest workstation at '/var/lib/puppet/ssl/ca/requests/workstation.pem'

Удалить сертификат с сервера:

puppetca --clean puppet-client.domain

При этом puppet позволяет пользоваться своими утилитами через подкоманды, т.е. puppet cert = puppetca

Проблема с сертефикатами

При первом запуске в логах:

Aug 28 12:05:39 maverick puppetd[3464]: (/File[/var/lib/puppet/lib]) Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Aug 28 12:05:44 maverick puppetd[3464]: (/File[/var/lib/puppet/lib]) Failed to retrieve current state of resource: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed Could not retrieve file metadata for puppet://172.18.196.7/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Aug 28 12:15:17 maverick puppetd[3850]: (/File[/var/lib/puppet/lib]) Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Aug 28 12:15:23 maverick puppetd[3850]: (/File[/var/lib/puppet/lib]) Failed to retrieve current state of resource: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed Could not retrieve file metadata for puppet://172.18.196.7/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Для новой чистой ноды лечится удалением сертефикатов. Похоже что проблема в том что на клиенте я устанавливал и мастер-пакет тоже:

find /var/lib/puppet -type f -print0 |xargs -0r rm

Кроме этого На серверах должно быть сиинхронезировано время! иначе такая ошибка будет возникать всегда!


Еще одна проблема с сертефикатами ( client - ubuntu)

Время верное, синхронизированное но ошибка возникает:

info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client
err: /File[/var/lib/puppet/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client Could not retrieve file metadata for puppet://ec2-50-16-183-163.compute-1.amazonaws.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client
err: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client

Тоже лечится удалением старых сертефикатов

Ошибка pluginsync

Ошибка (у меня возникла вероятно из-за разных сборок на сервер и клиенте

info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://ip-10-117-81-201.ec2.internal/plugins
notice: /File[/var/lib/puppet/lib/puppet]: Dependency File[/var/lib/puppet/lib] has failures: true
warning: /File[/var/lib/puppet/lib/puppet]: Skipping because of failed dependencies
notice: /File[/var/lib/puppet/lib/puppet/parser]: Dependency File[/var/lib/puppet/lib] has failures: true
warning: /File[/var/lib/puppet/lib/puppet/parser]: Skipping because of failed dependencies

лечится установкой

pluginsync=false

Проблема версий


err: Could not retrieve catalog from remote server: Error 400 on SERVER: No support for http method POST
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Если верить документации то сервер не может быть младьше клиента, о чем и говорит эта ошибка. Вниманиедля пересборки ЛУЧШЕ использовать ruby 1.8 а не 1.9, значительно менбше сложностей. rpm взятый с puppetlabs пересобрался без проблем

Полезные ссылки