SSH と DHCP/DNS を使用しない Foreman VM プロビジョニング

SSH と DHCP/DNS を使用しない Foreman VM プロビジョニング

管理する顧客のサーバーを管理およびプロビジョニングできるように Foreman を実装しようとしています。中央の場所に Foreman をインストールし、顧客ネットワークの 1 つに Foreman Smart Proxy をインストールしました。すべて正常に動作しています (リモート Puppet エージェントはスマート プロキシに接続でき、中央の Foreman サーバーはデータを参照できます)。ただし、新しい VM をプロビジョニングしたいと考えています (vCenter 経由)。foreman-vmwareコンピューティング リソース プロファイルをインストールして構成し、VM テンプレートのエントリを作成しましたが、Foreman 経由で新しいホストを作成し、テンプレートからクローンするように指示すると、ノードが使用可能になるまで待機してハングします。これは、SSH で接続して構成を完了できるようにするためだと思いますが、問題は、Foreman サーバーが新しい VM に接続されないことです。新しい VM (Puppet エージェントがインストールされている) がスマート プロキシに接続してそのように構成を完了するように構成されることを期待していました。

私の設計は間違っていますか? 適切なソリューションを設計するのを手伝ってくれる人はいますか?

既存の DHCP および DNS サービスに干渉する可能性があるため、顧客ネットワーク上に新しい DHCP、DNS、および TFTP サーバーを作成することはできません。

ありがとう、ベン

答え1

tl;dr: 現在は動作しません。SSH プロビジョニングは Foreman サーバーから行われます。

私たちも同様の構成で、パブリック/集中型の Foreman/Puppet インスタンスがあり、これに複数の「小規模」な顧客を接続しています。私たちの場合、顧客のネットワークに「スマート プロキシ」をインストールしていません。顧客の IT スタッフが実際に私に SSH 認証情報を最小限の CentOS 6.x インストールに提供してくれました (実質的にはイメージの展開のようなものでしょうか)。Foreman では、新しい VM を「ベア メタル」として作成し、ホストの詳細画面の「テンプレート」タブから終了スクリプトをコピーして VM に貼り付けました (クライアント マシンに SSH 接続するには VPN を使用する必要がありました)。あなたの場合も、おそらく同様のことを実行できますが、「手動」の手順は通常好ましくありません。

これについて考えていたときに思いついたいくつかのランダムなアイデアを以下に示します。

  • おそらく、「cloud-init」の使い方がわかれば、Foreman サーバーが SSH で VM に接続できなくても、VM を「プロビジョニング」(スクリプトを実行) できるようになります。ESXi でそれがどのように機能するかはわかりませんが、おそらく「カスタム コード」が必要になるでしょう :)

  • おそらく、Foreman サーバーに OpenVPN サーバーを設定し、イメージを Foreman サーバーに自動的に VPN 接続するように設定してください。これには、Puppet/Foreman をインターネットに公開する必要がないという利点がありますが、この場合も、SSH で接続するホストの VPN IP を判別しようとすると、おそらくカスタム コードが関係することになります。また、特に PCI 準拠を目指す一部の顧客にとっては、脆弱性と見なされる可能性もあります。

  • プロビジョニング プロセス中に、Foreman サーバーが特定のホストに SSH 接続し、次に目的のクライアント IP ( ssh -t viaHost ssh $HOST_ADDRESS) に接続するように、「SSH 経由」構成を許可する新しいモジュールを作成します。もちろん、その方法を採用する場合は、おそらくスマート プロキシ操作にすることもできます。その場合、Foreman サーバーから SSH 接続を試行する代わりに、スマート プロキシに SSH 接続を依頼します。

これらはすべて潜在的な解決策ですが、現時点ではどれも機能しないと思います。機能リクエストを提出するのは良い考えかもしれません。http://projects.theforeman.org/projects/foreman/issues

~トミー

答え2

プルリクエスト#3623Foremanが使用する霧に対する対策は、user_dataテンプレートからコマンドを実行する際に役立ちます。runcmdエントリ。

関連情報