Puppet: различия между версиями
Sirmax (обсуждение | вклад) м (Защищена страница «Puppet» [edit=sysop:move=sysop]) |
Sirmax (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Puppet]] |
||
+ | [[Категория:Linux]] |
||
+ | [[Категория:Autodeploy]] |
||
+ | [[Категория:Ruby]] |
||
+ | |||
=Puppet= |
=Puppet= |
||
Начал изучать Puppet - здесь шаги и проблемы. Заметки для себя. |
Начал изучать Puppet - здесь шаги и проблемы. Заметки для себя. |
||
+ | ==Установка== |
||
+ | Пробую на убунте, мастер 11.10 клиент 10.04 |
||
+ | <PRE> |
||
+ | sudo apt-get install puppet |
||
+ | sudo apt-get install puppet puppetmaster |
||
+ | </PRE> |
||
+ | ==Натройка== |
||
+ | ===Клиент=== |
||
+ | <PRE> |
||
+ | [main] |
||
+ | server = mmaxur-pc.kha.domain.net |
||
+ | node_name = cert |
||
+ | certname = workstation |
||
+ | </PRE> |
||
+ | |||
+ | server = mmaxur-pc.kha.domain.net - Тут все ясно <BR> |
||
+ | certname = workstation - это имя сертефиката <BR> |
||
+ | node_name = cert - уточнить? это тип авторизации<BR> |
||
+ | |||
+ | Запускать для теста удобно так: |
||
+ | <PRE> |
||
+ | 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 |
||
+ | </PRE> |
||
+ | |||
+ | Тут выше ошибка в конфиге, потому - не отработало |
||
+ | <B>Важно</B> что бы сервер был такой же как в имени сертефиката. |
||
+ | Т.е. указать IP вместо mmaxur-pc.kha.domain.net без дополнительных телодвижений нельзя (<B>уточнить КАК</B>) |
||
+ | <BR> |
||
+ | При успешном запуске: |
||
+ | <PRE> |
||
+ | 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 |
||
+ | |||
+ | |||
+ | |||
+ | </PRE> |
||
+ | |||
+ | ===Сервер (Мастер)=== |
||
+ | <PRE> |
||
+ | [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 |
||
+ | </PRE> |
||
+ | |||
+ | В первой попытке соединиться с мастером клиенту будет отказано по причине отсутствия подписанного SSL сертификата, поэтому, получив отказ, клиент оставит запрос на его получение. Посмотреть список запросов можно с помощью команды: |
||
+ | <PRE> |
||
+ | puppetca --list |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | # puppetca --list |
||
+ | "workstation" (D9:72:3F:95:76:C8:42:B2:C6:4A:78:71:F6:BF:9B:47) |
||
+ | </PRE> |
||
+ | Имя - то что вписано на клиенте. |
||
+ | |||
+ | Подписать сертификат и, соответственно, разрешить доступ клиенту можно командой: |
||
+ | <PRE> |
||
+ | puppetca --sign puppet-client.domain |
||
+ | </PRE> |
||
+ | где "puppet-client.domain" - имя клиента. |
||
+ | <PRE> |
||
+ | 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' |
||
+ | </PRE> |
||
+ | |||
+ | Удалить сертификат с сервера: |
||
+ | <PRE> |
||
+ | puppetca --clean puppet-client.domain |
||
+ | </PRE> |
||
+ | При этом puppet позволяет пользоваться своими утилитами через подкоманды, т.е. <B>puppet cert = puppetca</B> |
||
+ | |||
+ | ===Проблема с сертефикатами=== |
||
+ | При первом запуске в логах: |
||
+ | <PRE> |
||
+ | 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 |
||
+ | </PRE> |
||
+ | Для новой чистой ноды лечится удалением сертефикатов. Похоже что проблема в том что на клиенте я устанавливал и мастер-пакет тоже: |
||
+ | <PRE> |
||
+ | find /var/lib/puppet -type f -print0 |xargs -0r rm |
||
+ | </PRE> |
||
+ | Кроме этого <B> На серверах должно быть сиинхронезировано время!</B> иначе такая ошибка будет возникать всегда! |
||
+ | |||
+ | |||
+ | ===Еще одна проблема с сертефикатами ( client - ubuntu)=== |
||
+ | Время верное, синхронизированное но ошибка возникает: |
||
+ | <PRE> |
||
+ | 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 |
||
+ | </PRE> |
||
+ | Тоже лечится удалением старых сертефикатов |
||
+ | |||
+ | ===Ошибка pluginsync=== |
||
+ | Ошибка (у меня возникла вероятно из-за разных сборок на сервер и клиенте |
||
+ | <PRE> |
||
+ | 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 |
||
+ | </PRE> |
||
+ | лечится установкой |
||
+ | <PRE> |
||
+ | pluginsync=false |
||
+ | </PRE> |
||
+ | |||
+ | ===Проблема версий=== |
||
+ | <PRE> |
||
+ | |||
+ | 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 |
||
+ | </PRE> |
||
+ | Если верить документации то сервер не может быть младьше клиента, о чем и говорит эта ошибка. |
||
+ | <B>Внимание</B>для пересборки ЛУЧШЕ использовать ruby 1.8 а не 1.9, значительно менбше сложностей. rpm взятый с puppetlabs пересобрался без проблем |
||
+ | |||
+ | =Полезные ссылки= |
||
+ | * Описание ошибок http://bitcube.co.uk/content/puppet-errors-explained |
||
+ | * http://habrahabr.ru/company/badoo/blog/157023/#habracut Под нагрузкой |
Текущая версия на 16:28, 28 февраля 2013
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 пересобрался без проблем
Полезные ссылки
- Описание ошибок http://bitcube.co.uk/content/puppet-errors-explained
- http://habrahabr.ru/company/badoo/blog/157023/#habracut Под нагрузкой