PowerShell で DNS 操作


現在、俺々 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 のプロンプトから以下を実行します。

DnsServer モジュールは、TechNet によると Windows 2012、Windows 8 以上が必要のようです。
DNS Server Comdlets in Windows PowerShell

CSV からホスト名と IP アドレスを拾って DNS に登録していくスクリプトはこちら。

スクリプトに喰わせる CSV は以下になります。ProjectNee と違うのはご容赦を…完全に個人の好みです。同じ IP アドレスがあるのは、全環境で同じ DNS サービスを使い回すためです。Windows の vCenter Server を利用するときもあれば、仮想アプライアンスの vCenter Server を利用する時もあるためです。この手間は仕方ないとして、実際に利用し始める前に不要な PTR レコードは削除しています。

小ネタ

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 のアドレス体系でも不自由ないかも知れません。

コメントを残す