これまで紹介した VMware Cloud Director 10.4(VCD)の PowerCLI 操作をくみあわせて、vApp をクローンするスクリプトの例を紹介します。
VCD 環境は、前回までのものを引き続き利用しています。
1. コンフィグ ファイルの用意
今回は、vApp テンプレートをクローン展開する際のパラメータを、別ファイルとして作成しておきます。
config_test-vapp-01.ps1
2. vApp クローン スクリプト
vApp テンプレートをクローンして、いくつか追加設定をするスクリプトです。これまで紹介した PowerCLI での操作を利用しています。
01_clone_vcd_vapp.ps1
- L73: vApp テンプレートから vApp をクローン作成
- L81: 組織 VDC ネットワークを、vApp ネットワークとして追加
- L86: 特定の仮想マシン(踏み台として用意した jbox01)の NIC の接続ネットワークを変更して、MAC アドレスを再生成
- L91: 仮想マシンが接続されていない vApp ネットワークを削除
- L103: 仮想マシンのストレージ ポリシーを変更
- L116: vApp を開始(すべての仮想マシンをパワーオン)
- L127: vApp のリース期限を設定
3. vApp 削除スクリプト
vApp クローンで使用したコンフィグ ファイルをもとに、vApp を削除するスクリプトも用意しておきます。
02_delete_vcd_vapp.ps1
4. スクリプトを実行した様子
Connect-CIServer で、VCD のエンドポイントに接続しておきます。
PS C:\> Connect-CIServer -Server lab-vcd-31.vcd.go-lab.jp -Org demo-org-01 -User org-01-admin -Password VMware1!
01_clone_vcd_vapp.ps1 を実行すると、下記のように vApp を展開できます。
PS C:> .\01_clone_vcd_vapp.ps1 .\config_test-vapp-01.ps1 Clone vApp:test-vapp-01-011 Add vApp Network: vApp=>test-vapp-01-011 Network=>orgvdc-routed-nw-01 Connect vApp Network: VM=>test-vapp-01-011/jbox01 Network=>orgvdc-routed-nw-01 Remove vApp Network: vApp=>test-vapp-01-011 vAppNetwork=>orgvdc-ext-nw-vlan-31 Set Storage Policy: vApp=>test-vapp-01-011 VM=>jbox01 Policy=>sp-local-vmfs-2 Set Storage Policy: vApp=>test-vapp-01-011 VM=>vm01 Policy=>sp-local-vmfs-2 Set Storage Policy: vApp=>test-vapp-01-011 VM=>vm02 Policy=>sp-local-vmfs-2 Clone vApp:test-vapp-01-012 Add vApp Network: vApp=>test-vapp-01-012 Network=>orgvdc-routed-nw-01 Connect vApp Network: VM=>test-vapp-01-012/jbox01 Network=>orgvdc-routed-nw-01 Remove vApp Network: vApp=>test-vapp-01-012 vAppNetwork=>orgvdc-ext-nw-vlan-31 Set Storage Policy: vApp=>test-vapp-01-012 VM=>jbox01 Policy=>sp-local-vmfs-2 Set Storage Policy: vApp=>test-vapp-01-012 VM=>vm01 Policy=>sp-local-vmfs-2 Set Storage Policy: vApp=>test-vapp-01-012 VM=>vm02 Policy=>sp-local-vmfs-2 List Jumpbox-VM IP Address: vApp VM MACAddress VAppNetwork IPAddress ---- -- ---------- ----------- --------- test-vapp-01-011 jbox01 00:50:56:01:01:89 orgvdc-routed-nw-01 10.0.1.100 test-vapp-01-012 jbox01 00:50:56:01:01:8a orgvdc-routed-nw-01 10.0.1.101 Start vApp:test-vapp-01-011 Start vApp:test-vapp-01-012 Set vApp Lease:test-vapp-01-011 Set vApp Lease:test-vapp-01-012 List vApp Lease: vApp RuntimeLease DeploymentLeaseExpiration StorageLease StorageLeaseExpiration ---- ------------ ------------------------- ------------ ---------------------- test-vapp-01-011 10:00:00 2023/05/01 0:49:24 01:00:00 test-vapp-01-012 10:00:00 2023/05/01 0:49:27 01:00:00
テナント ポータルで、vApp が作成されたことが確認できます。
vApp に含まれている「jbox01」という踏み台 仮想マシンは、NIC 0 がコンフィグ ファイルで指定したネットワークに接続されています。
そして、02_delete_vcd_vapp.ps1 で削除できます。
PS C:\> .\02_delete_vcd_vapp.ps1 .\config_test-vapp-01.ps1 Stop vApp: test-vapp-01-011 Delete vApp: test-vapp-01-011 Stop vApp: test-vapp-01-012 Delete vApp: test-vapp-01-012
PowerCLI は、vSphere の操作と同様に、対話的に操作する場合は利用しやすいと思います。しかし新たに VCD を自動化するとなると、コードの形式が定まっているぶん、Terraform を利用したほうがメンテナンスしやすいかなと思います。
以上、VCD を PowerCLI で操作してみる話でした。