現在、俺々 Lab に vCloud Director (vCD) モドキを vCenter Orchestrator (vCO) で作成しています。その作業の中で、Windows の DNS サーバーの A レコード作成が手間だったので PowerShell 化したので、その過程を記録に残します。
作成中 の vCD モドキは、同一の環境を 2 分程度でコピーできることを目的としています。
- SID 同一
- SSH の各種鍵 同一
- IP アドレス 同一
- MAC アドレス 同一
- Gateway は IP Masquerade で同一 * 環境を隠蔽
VMware 製品を簡単に試せる ProjectNee や、vCD を使った PC 教室と同様の実装になります。直ぐに試したい製品で必要な IP アドレスは 100 近くになるため、UI で A レコード、PTR レコードを追加するのはマゾい作業です。ホスト名、IP アドレス、MAC アドレスを管理するためのスプレッドシートから、ホスト名、IP アドレスの CSV ファイルを作成し、これを入力とする PowerShell を作成したいと思います。
まず、PowerShell に DNS 管理用のモジュールを追加します。PowerShell のプロンプトから以下を実行します。
> Get-Command -Module DnsServer > update-help
DnsServer モジュールは、TechNet によると Windows 2012、Windows 8 以上が必要のようです。
DNS Server Comdlets in Windows PowerShell
CSV からホスト名と IP アドレスを拾って DNS に登録していくスクリプトはこちら。
$ZoneName = "corp.local" $CsvFile = "C:Tempip-address-list.csv" $HostInfos = Import-Csv $CsvFile $HostInfos | ForEach-Object { $HostInfo = $_ $Record = $false # With "-ErrorAction Ignore", if a value of -Name doesn't exist in the Zone, then Get-DnsServerResourceRecord returns $null # Otherwise, you get an exception which stops this script. $Record = Get-DnsServerResourceRecord -ZoneName $ZoneName -Name $HostInfo.Hostname -ErrorAction Ignore If ( ! $Record ) { Add-DnsServerResourceRecordA -ZoneName $ZoneName -Name $HostInfo.Hostname -IPv4Address $HostInfo.IpAddr -CreatePtr } }
スクリプトに喰わせる CSV は以下になります。ProjectNee と違うのはご容赦を...完全に個人の好みです。同じ IP アドレスがあるのは、全環境で同じ DNS サービスを使い回すためです。Windows の vCenter Server を利用するときもあれば、仮想アプライアンスの vCenter Server を利用する時もあるためです。この手間は仕方ないとして、実際に利用し始める前に不要な PTR レコードは削除しています。
Hostname,IpAddr controlcenter,192.168.110.1 vc-l-01a,192.168.110.11 vc-w12-01a,192.168.110.11 vco-l-01a,192.168.110.12 vcd-l-01a,192.168.110.21 vcd-l-02a,192.168.110.22 vcns-l-01a,192.168.110.31 nsx-l-01a,192.168.110.31 vcops-l-01a,192.168.110.41 vcops-l-02a,192.168.110.42 srm-w8-01a,192.168.110.51 srm-w12-01a,192.168.110.51 srm-w8-02a,192.168.110.52 srm-w12-02a,192.168.110.52 vr-l-01a,192.168.110.55 vr-l-02a,192.168.110.56 vcli-l-01a,192.168.110.52 vcac-l-01a,192.168.110.61 iaas-w8-01a,192.168.110.65 iaas-w12-01a,192.168.110.65 appd-l-01a,192.168.110.66 itfm-l-01a,192.168.110.67 bde-l-01a,192.168.110.71 ....
小ネタ
vSphere Web Client (あるいは vSphere Client) から MAC アドレスを固定すると、MAC アドレスの先頭 3 オクテット (OUI: Organizationally Unique Identifier) は 00:50:56 となります。HomeLab などで MAC アドレスもコントロールしたい場合は、IP アドレスは Class B のアドレス体系にして、その IP アドレスとMAC アドレスの後半の 3 オクテットを 10 進数でマッピングすると管理しやすいと思いますよ。
IP アドレスを見て瞬時に脳内で 10 進数 ➡ 16 進数 の変換が出来る人は Class A のアドレス体系でも不自由ないかも知れません。
0 コメント:
コメントを投稿