web-dev-qa-db-ja.com

puppetサーバーのホスト名が証明書と一致しません-認証できません。

私はこの質問が以前に多くの異なる変種で尋ねられたことを知っています。問題に関連するすべての投稿を読みましたが、エージェントとマスターが互いに話し合うことができません。両方ともlinuxmint17で実行されているvmworkステーションを介して2つのvmを起動します。

このスレッドは、クライアントとpuppetmasterの/ etc/hostsと/ etc/hostnameがどのようになっているのかを説明することから始めます。

クライアントのVMでは、/ etc/hostnameのホスト名は次のようになります。

puppetclient

/ etc/hostsにあるクライアントのVMホストは次のようになります。

127.0.0.1 localhost
127.0.1.1 puppetclient
192.168.75.143 puppetmaster

私のマスターのvm/etc/hostnameでは、次のようになります。

puppetmaster

私のマスターのvm/etc/hostsは次のようになります。

127.0.0.1 localhost
127.0.1.1 puppetmaster
192.168.75.144 puppetclient

マスターの/etc/puppet/puppet.confは次のようになります。

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

クライアントの/etc/puppet/puppet.confは次のようになります。

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

[agent]
server=puppetmaster

検索中にpuppet.confのバリエーションがたくさんあり、ここに投稿する気がしません。バリアントの1つは、クライアントとマスターのvmの両方にserver=puppetmasterin [main]を含めることです。とにかく、私が試したすべてのpuppet.confバリアントについて、Sudo puppet agent --testを実行したときの最初のエラーは常にwarning: unable to fetch my node definitoin, but agent run will continue:であり、その後のエラーは、実装するpuppet.confのバリアントごとに異なります。誰かが私のセットアップの正しい構成を教えてもらえますか?

ありがとう

1
user3610701

最初にパペットマスターをインストールして実行し、次にホスト名を変更したようです。

Puppet masterで実行:puppet config print certnameこれにより、マスターが使用する証明書名が表示されます。ホスト名と同じである必要があります。

ホスト名と一致する場合は、マスターの証明書の共通名を確認できます。

openssl x509 -noout -subject -in $(puppet config print ssldir)/certs/$(puppet config print certname).pem

また、puppet構成でFQDNを使用することをお勧めします。ホスト名が異なる場合、最も簡単な方法は、SSLディレクトリを削除または名前変更することです。

mv $(puppet config print ssldir){,_}

そして、パペットマスターを再起動します。 CAが変更されるため、クライアントノードでもこれを行う必要があります。

2
Glueon