Есть ли способ настроить мастер марионеток для автоматического приема всех сертификатов от клиентов (чтобы мне не приходилось каждый раз устанавливать puppetca на мастере)?
Создать файл /etc/puppet/autosign.conf
на главном сервере, содержащий доменные имена хостов, для которых вы хотите, чтобы сертификаты подписывались автоматически.
Пример:
www.example.com
*.example.org
*
echo "*" > /etc/puppet/autosign.conf
Или вы можете быть немного более безопасным (но не совсем так, поскольку клиент устанавливает свое собственное имя сертификата; кому-то, кто хочет незаконный доступ к вашему хозяину марионеток, просто нужно знать, какое имя подделать), ограничив его определенным доменом:
echo "*.stackexchange.com" > /etc/puppet/autosign.conf
Я лично не сторонник автоматической подписи этих сертификатов по уже изложенным причинам.
Я собрал небольшой скрипт, запущенный во время моего кикстарта, который запускает следующее:
echo Configuring local Puppet instance...
/usr/sbin/puppetd --waitforcert 900
sleep 10
echo We will use $HOSTNAME for all future requests...
echo Running server side script..
chvt 1
ssh -q -t $USERNAME@puppetmaster auto_client.sh $HOSTNAME
chvt 6
auto_client.sh
#! /bin/bash
NEWHOST=$1
sudo puppetca --sign $NEWHOST
if ! ( cat /etc/puppet/manifests/* | grep "$NEWHOST" )
then
NHFILE=/etc/puppet/manifests/temp.pp
echo node \'$NEWHOST\' >> $NHFILE
echo { >> $NHFILE
echo include linux_base >> $NHFILE
echo } >> newhost.cfg >> $NHFILE
fi
Я серьезно думал о том, чтобы сделать что-то вроде использования сертификата SSL, хранящегося на USB-накопителе, для соединения SSH, но это оказалось более удобным.