VMware Cloud Director 10.4(VCD)で、Ansible を使用して vApp 作成と削除を試してみます。今回は、すでに用意してある vApp テンプレートから vApp を作成します。
前回はこちら。
今回の内容です。
今回の環境
VCD の検証環境は、下記のように構築しています。
今回利用する vApp テンプレート「vapp-template-01」は、一連の投稿のうち下記のあたりで作成したものです。
今回の内容です。
1. vApp の作成
vApp テンプレートから vApp を作成して、仮想マシンはそのままパワーオンします。
1-1. Ansible Playbook の用意
下記のような Playbook を用意しました。
- 作成する vApp の名前は、vapp-03
- 作成先の VCD 組織は demo-org-01、組織 VDC は org-vdc-01
- vApp は、catalog-03 カタログにある vapp-template-01 テンプレートから作成
- description に「created by ansible」を記載する
1-2. Ansible Playbook の実行
それでは、Playbook を実行します。
# ansible-playbook demo_create_vapp-03.yml
これで、VCD のテナント ポータルで確認すると vApp が作成、開始されるはずです。Playbook に指定したとおり、vApp の「説明」に「created by ansible」が記載されています。
vApp と仮想マシンが、パワーオンされた状態になります。
vApp テンプレートに作成されていた vApp ネットワークも利用可能です。
ただし、vApp テンプレートから vApp を作成しただけでは、なぜかその中の仮想マシンで「ゲスト OS のカスタマイズ」は動作しませんでした。ゲスト OS で root パスワード変更やカスタム スクリプトを実行したい場合には、まず空の vcd_vapp で vApp を作成してから、vcd_vapp_vm モジュールで仮想マシンを追加したりすることで「ゲスト OS のカスタマイズ」を作動させることができます。
2. vApp の削除
作成した vApp を削除してみます。
2-1. Ansible Playbook の用意
今回は、下記のような Playbook を用意しました。ちなみに、vApp 作成時に指定していたカタログやテンプレートは削除の場合には不要ですが、そのまま残しておいても動作します。
- vApp 作成で使用した demo_create_vapp-03.yml の、state を "absent" に変更
- force: true を追記
VCD では、vApp を削除する際に、事前に停止しておく必要があります。そして、Ansible の vcd_vapp モジュールを使用する場合でも、vApp を起動たまま削除しようとするとエラーになります。
Ansible の vcd_vapp でも vApp の停止は可能ですが、vApp 削除と同時にはできないようで、Ansble の Play が分割されてしまいます。ラボ環境であれば、ただすぐに vApp を削除したいケースもあるので、今回は「force: true」を指定して強制削除しています。
2-2. Ansible Playbook の実行
Playbook を実行すると、自動的に vApp がその中の仮想マシンも含めて停止され、削除されます。
# ansible-playbook demo_delete_vapp-03.yml
テナント ポータルでも、vApp が削除される様子が確認できます。
つづく。