ネットワーク上にすでに存在するDHCPサーバーを使用するようにOpenNebulaを構成しようとしています。はい、OpenNebulaがIPアドレスではなく仮想MACアドレスを管理していることはすでに知っていますが、それではこれを機能させる方法がわかりません。 ;)
私のゲストとホストはどちらもCentOSなので、必要なのは、BOOTPROTO = dhcpが/ etc/sysconfig/network-scripts/ifcfg-eth0にダンプされるようにコンテキスト化を構成することだけだと思います。
これは、VMの静的IPの束を管理するよりも単純であるように見えるため、これは簡単に実行できるように思われます。これは一般的な使用例であると思われます。しかし、これまでのグーグルはほとんど現れていません。
ありがとう!
編集:BOOTPROTO = dhcpおよびDHCP_HOSTNAME = fooを手動で設定し、vmでネットワークを再起動すると、DHCPサーバーはvmにIPアドレスを正常に提供します。これで問題ありません。スピンアップするVMのホスト名も設定できるようにしたいと思います。
今では、ONEにこれらのことを自動的に/ WebインターフェイスまたはCLIツールを介して実行させる方法を決定するだけです。また、DHCPがVMに与えたIPではなく、元のリースのIPアドレスをリストします。その問題も修正してもらうといいでしょう。
私のOpennebulaはバージョン4.8.0です。私も同様のニーズを持っていたので、これが私がしたことです:
DHCPを使用するには、ゲストOSを手動で設定する必要があります。それを自動的に行う方法はわかりませんが、それは大きな問題ではありません。
これが、DHCPを使用するテンプレートを作成するためにさらに進んだ方法です。次に、CentOS6.5などの新しいオペレーティングシステムをインストールしました。
これで、そのテンプレートから生成されるすべての新しいVMは、「DHCP」仮想ネットワークを使用し、動的IPアドレスを持ち、OpennebulaはそのようなVMのIPアドレスを表示しません。
ホスト名の自動設定についてはお答えできませんが、ゲストOSとDHCPの設定の問題だと思います。一方、DHCPはどのホスト名をどのMACアドレスに与えるかを知っている必要があり、OpennebulaはそれらのMACアドレスを動的に生成するため、DHCPサーバーにそれらについて事前に通知する方法がわかりません。
にとって v4.x
(4.10未満?):
まず、必要な設定を使用してVNET
を作成します。たとえば、ブリッジネットワークの場合、次のようになります。
NAME = "net0"
TYPE = "FIXED"
BRIDGE = "br0"
次に、そのVNET
に関連付けられたリースを作成します。 IPアドレスは必須で一意ですが、DHCPを使用している場合はNIC 'キー'としてのみ使用されます(以下を参照))。MACアドレスは次のように設定してください。 DHCPサーバーはそれにアドレスを提供します:
VNET = "net0"
IP = "192.168.0.1"
MAC = "02:00:d7:00:00:01"
次に、VMにNICを追加します。
NETWORK = "net0" IP = "192.168.0.1" MODEL = "virtio"
次に、そのMACアドレスに対してDHCPを適切に構成してください。
にとって 4.x > 10?
および5.x
、リースがアドレス範囲に置き換えられていることを除いて、ほぼ同じです。
上記のように(ほぼ)VNETを作成します。
NAME = "net0"
VN_MAD = "dummy"
BRIDGE = "br0"
次に、1つのアドレスのみを含むアドレス範囲を作成します。
VNET= "net0"
SIZE = "1"
MAC = "02:00:d7:00:00:01"
VMでこのARを使用します。
NETWORK="net0"
MAC="02:00:d7:00:00:01"
MODEL="virtio"
また、必要に応じてDHCPを設定します。
アドレス範囲の詳細については、こちらをご覧ください。
自分でhostnamectlできるようになるまで、dhcpdconfigビットを使用して新しいボックスに暫定ホスト名を設定することを検討してください。ログを調べたりIPを推測したりすることなく、接続に使用できる推測可能なホスト名を設定できるという利点があります。
if (not (option Host-name ~~ "^[a-z0-9][a-z0-9\-]+[a-z0-9]$")) {
set new_Host-name = concat("Host-", binary-to-ascii(16, 8, "", substring(hardware, 1, 6)));
log(concat("invalid hostname: ", option Host-name, " => ", new_Host-name));
ddns-hostname = new_Host-name;
} else {
ddns-hostname = pick (option fqdn.hostname, option Host-name, substring (option dhcp-client-identifier, 1, 20));
}
Peter Rathlevによるすばらしい投稿からこれを取得しました: https://lists.isc.org/pipermail/dhcp-users/2013-March/016518.html 。別の質問への回答ですが、dhcpdを構成して驚くべきことを実行し、少なくとも必要と思われることを実行する方法の優れた例を提供します。