Libvirtとdnsmasqを使用してゲストがホスト名で互いに通信できるようにする

Libvirtとdnsmasqを使用してゲストがホスト名で互いに通信できるようにする

私はAnsibleを使用して仮想マシンをプロビジョニングするのに最適です。 DnsmasqはDHCPを処理して自動的にIPを取得します。ただし、DNSが構成されていないため、仮想マシンはホスト名で互いに通信できず、IPでのみ通信できます。

virsh net-define新しいドメインを使用して作成する必要があるいくつかのガイドを読んでくださいvirsh net-edit。ただし、これは手動で行う必要があります。このガイド私が注目しているものの一つです。

どういうわけか自動的にできるのですか?私が提供したガイドよりも優れていませんか?

単純化のためにホストを追加しましたが、/etc/hostsより良い解決策が必要だと思いますか?

答え1

付加的な知識:

多くのアプリケーションが呼び出しを介してFQDNを確認します。ホスト名の取得

Linuxでは、Cライブラリは以下を読みます。/etc/nsswitch.conf情報ソースを設定します。少なくとも持ってhosts: filesいる場合/etc/hosts

実際の答え

Vagrantでlibvirtを使用して使用できます。浮遊ホストマネージャ

/etc/hoststldr:ゲストにエントリを追加して/etc/hostsホストに更新できます。

/etc/hostsAnsibleを使用してlibvirtまたはQEMUを直接呼び出すことができる場合は、次の動作を複製できます。 AnsibleはIPアドレスが収集されたことを知っているため、各ゲストとホストへの接続を追加できます。hostvars変数の値を照会し、インベントリ全体に基づいてプレイブックを使用する必要があるかもしれません(したがって、実際に収集ステップが各ホストに適用され、IPを取得します)。静的IPの場合:すべてのゲストで同じコンテンツをダンプできます(そしてIPの重複を避けるためにテンプレートを使用できます)。

私が一つ見つけたエマルジョンこれは別の答えを提供します(プロジェクトに関連するVMだけでなく、すべてのVMにも影響します)。

関連情報