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

Проблема 1

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

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

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


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

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


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

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 пересобрался без проблем

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