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
在 master 上创建一个文件
/etc/puppet/autosign.conf
,其中包含您希望自动为其签名证书的主机的域名。例子:
或者你可以更安全一点(但不是真的,因为客户端设置了自己的证书名称;想要非法访问你的人偶大师的人只需要知道伪造什么名字)通过将它限制在特定域:
由于已经概述的原因,我个人不喜欢自动签署这些证书。
我整理了一个在 kickstart 期间启动的小脚本,该脚本运行以下内容:
auto_client.sh
我认真地考虑过使用存储在 USB 记忆棒上的 SSL 证书进行 SSH 连接,但事实证明这更方便。