2015/09/16

Hyper-V ホストから仮想マシンの IP を設定する (Static IP Injection 利用で)


Hyper-V の管理 OS 側から仮想マシンのネットワーク アダプターに静的な IP アドレスを設定するというステキな PowerShell スクリプトを発見。

Windows IT Pro > Modify IP Configuration of VM from Hyper-V Host (by John Savill)
[URL] http://windowsitpro.com/hyper-v/modify-ip-configuration-vm-hyper-v-host


追記)
MSDN Blogs Taylor Brown's Blog > Setting Guest IP Address From The Host
[URL] http://blogs.msdn.com/b/taylorb/archive/2014/11/03/setting-guest-ip-addresses-from-the-host.aspx

Windows 10 のクライアント Hyper-V でも動きました。次の画面は、192.168.10.24 (DHCP) を 192.168.10.89 (静的) 割り当てに変更したところ。


とても私には書けそうもないスクリプトに感謝、感激。でも、仮想マシンに 2 つのネットワーク アダプターがあると、エラーになっちゃうかも。

このスクリプトは、Windows Server 2012 (および、たぶん Windows 8)以降の Hyper-V に追加された Static IP Injection の機能を利用したもので、Windows ゲストと一部の Linux ゲストで利用可能。ちなみに、Hyper-V レプリカのフェールオーバーの TCP/IPによる IP の書き換えは、Static IP Injection の機能を利用したもの。

Windows IT Pro の記事のスクリプトをコピペして、ちょっと手を加えればもうちょっと汎用的に。



仮想マシンに 2 つのネットワーク アダプターがあると、エラーになっちゃうかも(再)。

Ubuntu 14.04 TLS を実行する仮想マシンでもちゃんと動きました。


Ubuntu の場合は、Network Manager が動いていると Static IP Injection が機能しないので、Network Manager がインストールされている場合は(デスクトップ環境ありの場合)、次のコマンドラインを実行して削除しておきます。

sudo apt-get remove network-manager

また、KVP データ交換サービスのサポートを追加する必要もあります。

sudo apt-get install hv-kvp-daemon-init (Ubuntu 14.10 の場合は sudo apt-get install llinux-cloud-tools-common linux-cloud-tools-generic linux-cloud-tools-virtual)

Linux の Static IP Injection 対応状況については、Linux and FreeBSD Virtual Machines on Hyper-V (https://technet.microsoft.com/en-us/library/dn531030.aspx) をご覧あれ。


・・・

ちなみに、Azure 仮想マシンの場合は、 こんな感じで内部 IP を変更できます。Hyper-V でもこんな感じで簡単にできるといいのに。

Add-AzureAccount
$vm = Get-AzureVM -ServiceName <クラウドサービス名> -name <仮想マシン名>
$StaticIP = "10.0.0.101"
Set-AzureStaticVnetIP -IPAddress $StaticIP -VM $vm | Update-AzureVM

0 件のコメント: