Puppet 管理対象のクライアント(puppet)とサーバー(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 wikiの 構成リファレンス を参照してください。
別のオプションは、puppetmasterノードを指定してクライアントインスタンスノードを作成する Capistrano のようなツールを使用することです。
ホストデータベースがある場合は、自動署名機能を使用できます。あなたの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>