Puppet が環境を切り替えてから元に戻るのはなぜですか?

Puppet が環境を切り替えてから元に戻るのはなぜですか?

これは Puppet 5.5.22 と Foreman 1.22.0-develop を使用しています。これは古い Foreman と Puppet のインストールであることは承知していますが、新しいバージョンに置き換えるまでは (近々予定されているプロジェクト)、これらをそのまま使用する必要があります。

# puppet agent -tv
Notice: Local environment: 'production' doesn't match server specified node environment 'development', switching agent to 'development'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Notice: Local environment: 'development' doesn't match server specified environment 'test', restarting agent run with environment 'test'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for servername.example.com
Info: Applying configuration version '1694623566'
Notice: Applied catalog in 12.93 seconds

元のローカル環境「production」は、/etc/puppet/puppet.conf から取得するか、そのファイルで環境が指定されていない場合はデフォルトになることを理解しています。この場合は後者 (ローカルに環境が指定されていない) です。

ノード環境「development」は、Foreman (この Puppet インストールの ENC または外部ノード分類子) でこのホストに設定されており、必要な正しい環境の割り当てです。

環境「テスト」は、現時点で Foreman がすべてのホストに対して広範かつ一般的に設定している環境であり、私が Foreman UI を通じて「開発」に変更する前のこの特定のホストの環境です。(つまり、「テスト」は実際には本番環境であり、「本番」と呼ばれる環境は現時点では使用されていません。)

Foreman のドキュメントを参照してみましたが、環境割り当てがどのように機能するかの基礎については何も見つかりませんでした。ドキュメントは UI のツアーに過ぎず、トラブルシューティングには役立ちません。


おそらく関連していると思われるが、servername.example.comが出現するという別の奇妙な点がある。2回Foreman の UI で。

名前 オペレーティング·システム パペット環境 モデル ホストグループ 最終報告 行動
[回転する車輪] サーバーの名前 Debian [バージョン] 発達 [ブレードサーバー名] ホストグループ名 [空白] [編集ボタン]
[電源アイコン、グレー] サーバーの名前 Debian [バージョン] テスト 標準PC [バージョン情報] [空白] 6分前 [編集ボタン]

「編集」ボタンをクリックしていずれかのエントリの環境を編集しようとすると、「送信」をクリックすると、新しいホスト エントリを作成しようとしているかのように、「名前」フィールドの横に「既に使用されています」というメッセージが赤で表示されます。

しかし、代わりにリストビューの左側にあるチェックボックスでホストを選択し、上部に移動して「アクションの選択」->「環境の変更」を選択すると、登場動作します。両方のエントリとも UI に「development」と表示されます。ただし、servername で次に Puppet を実行すると、この投稿の先頭に示されている出力が生成され、その後 Foreman UI を更新すると、再び「development」のエントリが 1 つと「test」のエントリが 1 つ表示されます。

この原因は何でしょうか? 環境にホストを割り当てて、それを維持するにはどうすればよいですか?

答え1

これを解決しました。

私たちの Puppet 設定には、まだどこかに Puppet 3 の設定の残りが残っているという特異性があります。正確な場所はわかりませんが、リスト内の「test」に戻るサーバー エントリには、古い Puppet サーバーとして Puppet マスターも表示されていました。その Puppet サーバーはもう存在しませんが、新しい Foreman サーバーにも同じ名前が付いています。少し複雑で、2 つの異なるエントリがどこから来たのか完全には理解していませんが、次の方法でフラッピング環境の割り当てを修正しました。

  1. Foreman UI で両方のホスト エントリを削除します (確認メッセージを注意深く読み、これによってホストまたはディスクが削除されないこと、および確認には意図した 2 つのホスト エントリのみがリストされていることを確認してください)。
  2. Puppetサーバー(つまり、コマンドラインでForemanサーバーにログイン)で、puppet cert clean servername.example.com
  3. servername.example.com で、ディレクトリを削除します/var/lib/puppet/ssl/(find /var/lib/puppet/ssl/ -deleteただし、 を使用しrm -rf /var/lib/puppet/ssl/ました)。
  4. servername.example.com で、ヘッダーの下に/etc/puppet/puppet.conf設定するファイルを編集します。environment = development[agent]
  5. servername.example.com で puppet を再実行していますpuppet agent -tv

これにより、開発環境からのコードが正しく適用され、環境の不一致に関する警告はどこにも表示されなくなりました。また、Foreman UI にはこのサーバーのエントリが 1 つだけ表示され、その環境が正しく であると示されるようになりましたdevelopment

関連情報