Як я можу попередньо підписати лялькові сертифікати?


26

Лялькові потрібні сертифікати між керованим клієнтом (лялькою) та сервером (ляльковим майстром). Ви можете запустити вручну клієнт і потім перейти на сервер, щоб підписати сертифікат, але як ви автоматизуєте цей процес для кластерів / хмарних машин?


1
Одна з проблем, пов'язаних із кутом, - це повторне використання імені хоста. Автоматичне проектування цього не вирішить. У мене є те саме питання.
Джоель К

Відповіді:


28

На сервері (ляльковий майстер) запустіть:

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>

Це дійсно корисно, дякую. Я сам був спантеличений цим.
Джон Топпер

1
нову команду puppet cert --generate <NAME>див. serverfault.com/a/457364/71452
c33s

6

Якщо у вас є база даних хостів, ви можете використовувати функцію автоматичного проектування. У своєму puppet.confфайлі в розділі " [puppetmasterd]Додати":

autosign = /path/to/autosign.conf

Потім використовуйте crontab для створення цього файлу. Файл автосигналу - це лише список хостів для автоматичного проектування, коли вони вперше підключаються до лялькового майстра. Я використовую LDAP для налаштування моїх лялькових хостів, так що мій cron виглядає так:

* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf

Я впевнений, що люди, які використовують iClassify, зможуть написати запит, щоб зробити те саме.

Звичайно, потрібно мати певну довіру до мережі. Я використовую це на EC2. Мій сервер лялькових майстрів знаходиться в групі, яка дозволяє лише з'єднання інших довірених груп. Я б не рекомендував робити це, якщо ваш ляльковий майстер відкритий для Інтернету.


6

Проста відповідь: автоматично підписуйте нові запити. Це, звичайно, небезпечно, оскільки ви сліпо довіряєте будь-якій системі, яка підключається до вашого лялькового майстра, що є метою вимагати підписання вручну.

[puppetmasterd]
autosign = true

Ви можете вказати помилковий і файл, який слід використовувати, щоб визначити, які ключі також підписувати.

Дивіться посилання на конфігурацію на wiki-вікні.

Інший варіант - використовувати такий інструмент, як Capistrano , де ви вказуєте вузол лялькових майстрів і створюєте вузли клієнтського примірника, а також у завданні:

  • Створіть вузол екземпляра, скажімо, за допомогою API EC2 з Ruby.
  • Запустіть puppetd на екземплярі, підключившись до сервера.
  • Запустіть puppetca - підпис для запиту екземпляра (оскільки ми знаємо ім'я екземпляра, як воно було вказане у біті створення вище).
  • Знову запустіть puppetd на екземплярі, на цей раз успішно підключившись після підписання сертифіката.

Примітка. Якщо ви використовуєте Лялечку 2.6 або вище, [puppetmasterd]тепер має бути заголовок розділу [master]. Див. Docs.puppetlabs.com/guides/tools.html для отримання додаткової інформації.
MrLore

4

На сервері (ляльковий майстер) запустіть:

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>

Це просто здається мені складнішим. Ви встановлюєте лялечку на клієнта, він генерує сертифікат і відправляє його майстру на підпис. Коли ви підпишете його на майстер, клієнт почне працювати наступного разу, коли він запуститься. Це передбачає менше кроків. Якщо ви дійсно хочете зберегти навіть цей крок, можете запустити роботу cron, яка виконує щось на зразок: для хоста в $ (puppetca --list); do puppetca - підписати $ host; виконано
Девід Пашлі

1
Це добре, якщо у вас є одна або дві машини, але коли ви запускаєте і зупиняєте машини в хмарі, вам не хочеться робити це вручну, я можу запустити базову машину, запустити сценарій, який входить і встановлює все вгору через маріонетку, не ввівшись до лялькового господаря.
Ranguard
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.