Кукольный требует сертификатов между клиентом (марионеткой) и сервером (puppetmaster). Вы можете запустить вручную на клиенте, а затем перейти на сервер, чтобы подписать сертификат, но как автоматизировать этот процесс для кластеров / облачных машин?
На сервере (puppetmaster) запустить:
puppetca --generate <NAME>
Затем скопируйте с сервера на клиент следующее:
/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem
Если вы хотите подписать <NAME>
как что-то другое, кроме использования имени хоста:
puppetd --fqdn=<NAME>
И добавьте в /etc/puppet/puppet.conf, если запущен демон
[puppetd]
certname=<NAME>
Простой ответ: автоматически подписывать новые запросы. Это, конечно, опасно, потому что вы слепо доверяете любой системе, которая подключается к вашему кукловоду, для чего требуется ручная подпись.
[puppetmasterd]
autosign = true
Вы также можете указать false и файл, который будет использоваться для определения ключей для подписи.
Увидеть ссылка на конфигурацию на вики-странице Puppet.
Другой вариант - использовать такой инструмент, как Capistrano, где вы указываете узел puppetmaster и создаете узлы экземпляра клиента, а в задаче:
Если у вас есть база данных хоста, вы можете использовать функцию автоподписи. В твоем puppet.conf
файл в [puppetmasterd]
, Добавить:
autosign = /path/to/autosign.conf
Затем используйте crontab для создания этого файла. Файл автоподписи - это просто список хостов для автоподписи при первом подключении к puppetmaster. Я использую LDAP для настройки своих марионеточных хостов, поэтому мой cron выглядит так:
* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf
Я уверен, что люди, использующие iClassify, смогут написать запрос, чтобы сделать то же самое.
Конечно, вам нужно немного доверять сети. Я использую это на EC2. Мой сервер puppetmaster находится в группе, которая разрешает соединения только из других доверенных групп. Я бы не рекомендовал делать это, если ваш кукловод открыт для Интернета.
На сервере (puppetmaster) запустить:
puppetca --generate <NAME>
Затем скопируйте с сервера на клиент следующее:
/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem
Если вы хотите использовать что-то другое, кроме имени хоста:
puppetd --fqdn=<NAME>
И добавьте в /etc/puppet/puppet.conf, если запущен демон
[puppetd]
certname=<NAME>