Puppet: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 16 промежуточных версий этого же участника)
Строка 1: Строка 1:
  +
[[Категория:Puppet]]
  +
[[Категория:Linux]]
  +
[[Категория:Autodeploy]]
  +
[[Категория:Ruby]]
  +
 
=Puppet=
 
=Puppet=
 
Начал изучать Puppet - здесь шаги и проблемы. Заметки для себя.
 
Начал изучать Puppet - здесь шаги и проблемы. Заметки для себя.
Строка 9: Строка 14:
 
==Натройка==
 
==Натройка==
 
===Клиент===
 
===Клиент===
  +
<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>
 
<PRE>
 
[main]
 
[main]
Строка 16: Строка 58:
 
rundir=/var/run/puppet
 
rundir=/var/run/puppet
 
factpath=$vardir/lib/facter
 
factpath=$vardir/lib/facter
pluginsync=true
 
 
templatedir=$confdir/templates
 
templatedir=$confdir/templates
 
prerun_command=/etc/puppet/etckeeper-commit-pre
 
prerun_command=/etc/puppet/etckeeper-commit-pre
 
postrun_command=/etc/puppet/etckeeper-commit-post
 
postrun_command=/etc/puppet/etckeeper-commit-post
  +
server = 172.18.196.7
 
  +
[master]
node_name = cert
 
  +
# These are needed when the puppetmaster is run by passenger
certname = workstation
 
  +
# and can safely be removed if webrick is used.
  +
ssl_client_header = SSL_CLIENT_S_DN
  +
ssl_client_verify_header = SSL_CLIENT_VERIFY
 
</PRE>
 
</PRE>
   
  +
В первой попытке соединиться с мастером клиенту будет отказано по причине отсутствия подписанного SSL сертификата, поэтому, получив отказ, клиент оставит запрос на его получение. Посмотреть список запросов можно с помощью команды:
server = 172.18.196.7 - Тут все ясно <BR>
 
  +
<PRE>
certname = workstation - это имя сертефиката <BR>
 
  +
puppetca --list
node_name = cert - уточнить <BR>
 
  +
</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>
   
===Проблема 1===
+
===Проблема с сертефикатами===
 
При первом запуске в логах:
 
При первом запуске в логах:
 
<PRE>
 
<PRE>
Строка 41: Строка 108:
 
find /var/lib/puppet -type f -print0 |xargs -0r rm
 
find /var/lib/puppet -type f -print0 |xargs -0r rm
 
</PRE>
 
</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 пересобрался без проблем

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