powercliを使用してテンプレートからVMを作成するツールの開発を行っているのですが、OS側のNICに割り振られるIPアドレスが意図した順序に設定されず壁にぶち当たっております。以下に詳細を記載しておりますので、原因や解決策についてアドバイスを頂きたく何卒宜しくお願い致します。
【実現したいこと】
処理フローは下記の流れとなります。ネットワークアダプタを4つ持つテンプレート(RHEL8)を準備し、3)でVMに設定したいNW関連の設定情報を配列に格納後、5)のデプロイで配列に格納されている順にifcfg-ethXXが設定されるようにしたい。
(配列[0] → ifcfg-eth0、配列[1] → ifcfg-eth1、配列[2] → ifcfg-eth2、配列[3] → ifcfg-eth3)
・1 )OSスペックシート(OSCustomizationSpec)を新規作成する
CustomizationSpec = New-OSCustomizationSpec -Name $CustomName -Domain "localhost" -OSType $OSType
・2 )デフォルトのNIC設定削除
NICMapping = Get-OSCustomizationNicMapping -OSCustomizationSpec $CustomName | where { $_.Position -eq 1 }
Remove-OSCustomizationNicMapping -OSCustomizationNicMapping $NICMapping -Confirm:$false
・3 )NWの事前設定
$Ipaddresses = $Ipaddress1,$Ipaddress2,$Ipaddress3,$Ipaddress4
$Subnetmasks = $Subnetmask1,$Subnetmask2,$Subnetmask3,$Subnetmask4
$Gateways = $Gateway1,$Gateway2,$Gateway3,$Gateway4
・4 )OSスペックシート内にOSのNW設定
for ($i = 1; $i -le 4; $i++) {
if ($IpAddresses[$i-1] -ne ""){
New-OScustomizationNicMapping -OSCustomizationSpec $CustomName -Position $i -IpMode UseStaticIP -IpAddress $Ipaddresses[$i-1] -SubnetMask $SubnetMasks[$i-1] -DefaultGateway $Gateways[$i-1]
}}
・5 )VMデプロイ
NEW-VM -Name $VMName -Template $Template -VMHost $VMHost -Datastore $Datastore -OSCustomizationSpec CustomName -Notes $Notes
その他、VM側のNIC(ネットワークアダプター)とOS側のNICの紐づけを以下としたいため、テンプレートのciSlotNumberを下記のように変更しています。
<紐づけ>
ネットワークアダプター1 → ifcfg-eth0
ネットワークアダプター2 → ifcfg-eth1
ネットワークアダプター3 → ifcfg-eth2
ネットワークアダプター4 → ifcfg-eth3
<pciSlotNumber>
scsi0.pciSlotNumber → 160
ethernet0.pciSlotNumber → 1184
ethernet1.pciSlotNumber → 192
ethernet2.pciSlotNumber → 224
ethernet3.pciSlotNumber → 256
【状況】
意図した通りの順序でIPアドレスがNICに割り振られない。何度実施しても下記の紐づけで設定されてしまいます。
配列[0] - ifcfg-eth1
配列[1] - ifcfg-eth2
配列[2] - ifcfg-eth3
配列[3] - ifcfg-eth0
因みにVM側のNICとOS側のNICの紐づけは問題なくできております。(MACアドレスで判断)
OSCustomizationSpecに設定されるNicMappingが上手くいっていないのかと思い確認しましたが、下記の通り問題なく設定されていることも確認してます。.
Get-OSCustomizationNicMapping -OSCustomizationSpec VM名
Position IPMode IPAddress DefaultGateway
-------- ------ --------- --------------
1 UseStaticIP 配列[0] 配列[0]
2 UseStaticIP 配列[1] 配列[1]
3 UseStaticIP 配列[2] 配列[2]
4 UseStaticIP 配列[3] 配列[3]
試しにテンプレートに設定するネットワークアダプターを4つ→3つに変更し、上記 3)、4)で配列に格納するNW関連の設定情報も4つ→3つにしてデプロイすると意図した通りの順序でIPアドレスがNICに振られます。
配列[0] - ifcfg-eth0
配列[1] - ifcfg-eth1
配列[2] - ifcfg-eth2
【検証環境】
・ホストはnucを使用しており直接ESXiをインストールしております。
・ESXiのバージョンはVMware vSphere 7.0となります。
・VcenterはVMware vCenter Server 7を使用しています。