Puppetクライアントを新しいPuppetmasterに移行する


8

既存のPuppetクライアントを新しいPuppetmasterサーバーを指すように移行するにはどうすればよいですか?手動で各クライアントボックスに移動して、新しい証明書を生成したくない。

/ etc / puppetおよび/ var / lib / puppetからすべてのファイルを新しいサーバーにrsyncして、明白な試みをすると、証明書エラーが発生しました。

/etc/init.d/puppetmaster start 
* Starting puppet master                
Could not run: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key

/var/lib/ssl/certs/var/lib/ssl/private_keyファイルをからold_hostnameにコピーすることで回避できましたnew_hostname。これは、基本的にパペットクライアントを新しいパペットマスター移行する際に推奨されるものです (古いパペットマスターサーバーはなくなり、バックアップのみを使用します)。

残念ながら、私のクライアントはまだ何かがおかしいことを知っており、次のエラーを教えてくれます。

sudo puppetd --test --server newservername.example.net --noop 
info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': hostname was not match with the server certificate
err: /File[/var/lib/puppet/lib]: Could not evaluate: hostname was not match with the server certificate Could not retrieve file metadata for puppet://newservername.example.net/plugins: hostname was not match with the server certificate
err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

したがって、クライアント証明書は、それらが関連付けられているホスト名をまだ認識しており、スイッチに不満があると思います。

puppet(レガシーpuppetmasterを指す)を使用して新しい証明書をデプロイする方法、または署名プロセスを何らかの方法で自動化する方法はありますか?

概要:2つのソリューションが提示されました:1)autosignマスターをオンにして証明書を完全にスキップするか、2)証明書がマスターのホスト名にバインドされているため、古いCNAMEを新しいマスターを指すように設定します。自動署名は(限られた時間ではあるが)単にセキュリティをオフにするように感じられたため、私は#2を選択しました。

回答:


3

両方のパペットマスターを一定期間稼働させておき、一度に少しずつクライアントを移行しますか?

もしそうなら、あなたは関係なく各クライアントシステムに触れることに行き詰まっています。新しいマスターを指すのか、hostsファイルのエントリを追加するのか、などです。その場合は、新しいマスターを新たに起動して各クライアントに再署名することもできます(検証の問題を回避するには、hostsファイルのハックよりも優れています)。

そうでない場合(古いサーバーを停止してすべてを一度に切り捨てる場合)、古いサーバーのホスト名を新しいサーバーに引き継ぐだけです。クライアントが古い名前(証明書にある名前)で新しいサーバーに接続している場合、証明書は有効であると認識されます。


ええ、問題は、各クライアントの再署名を自動化することが可能かどうかということでした。証明書はクライアントが特定のサーバーに到達するために使用しているホスト名にバインドされていると指摘したので、回答したと思います。そのため、ホスト名を再利用すれば、証明書を再利用できます。ありがとう!
mrisher

まあ、シンプルpuppetca --sign --allはクライアント証明書のためのトリックを行います。サーバー1は、不一致エラーの問題を提供するサーバーです。
シェーンマッデン

3

あなたは、単に使用することができ$ssldir、古いからくり士のをして、新しいからくり士でそれを使用します。

それ以外の場合は、次のようなスクリプトを展開できるはずです。

  • (クライアントスクリプトとは関係ありません。新しいパペットサーバーで自動署名を有効にする可能性があります)
  • 少し後で
  • パペットクライアントを停止する
  • クライアントのssldirを整理する
  • 新しいサーバーを指すようにクライアントのpuppet.confを変更します
  • ロックファイルを作成して、無限の再構成ループが発生しないようにします。
  • 人形をもう一度開始

醜いですが、移行モジュールが古いサーバーにのみあり、移行モジュールが新しいサーバーにのみないことを確認する限り、それはワンショットのことであり、魔法をかけるだけです...


こんにちは:autosignトリックは良いものですが、危険なようです。それがなければ、このソリューションは実際にクライアント証明書の不一致の問題に対処しますか?
mrisher

自動署名は、操り人形マスターで新しくなる何千ものクライアントに対処する必要のない怠惰な方法です。コンセプトは同じですが、新しいマスターに移行したクライアントは、署名されていない限り何の作業も行わないという違いがあります
Martin M.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.