VMware Cloud Director 10.4(VCD)を Terraform で操作してみます。
今回は、vApp と仮想マシンを作成してみます。VCD の Terraform Provider だと vApp テンプレートを直接展開できなそうなので、空の vApp を作成して vApp テンプレートに含まれる仮想マシンを追加します。
今回の内容です。
1. 今回の環境
ひきつづき、前回の投稿で Terraform をインストールした Linux を利用します。
Terraform 実行先は、下記の一連の投稿で構築した VCD ラボ環境です。
今回の vApp と仮想マシンの作成では、事前に作成してある vApp テンプレートと、組織 VDC ネットワークを利用します。
組織 VDC のカタログ「catalog-01」に vApp テンプレート「vapp-template-01」が作成してあり、そこには仮想マシンが 2つ(vm01 と vm02)が含まれています。
組織 VDC には、組織 VDC ネットワークを 2つ作成してあります。
- orgvdc-routed-nw-01
- orgvdc-routed-nw-02
それぞれの組織 VDC ネットワークでは、固定 IP プールを設定してあります。
この環境で、つぎのような vApp を作成します。
- vApp: tf-vapp-01
- VM: vm01(orgvdc-routed-nw-01 ネットワークに接続)
- VM: vm02(orgvdc-routed-nw-02 ネットワークに接続)
2. Terraform の Configuration ファイルの用意
Terraform の Configuration ファイルは、複数のファイルに分割できます。
前回は main.tf にすべての定義情報を記載していましたが、今回は下記のように 6つのファイルに分割して作成してみました。
demo [ ~/vcd ]$ ls -1 cred.auto.tfvars network.tf provider.tf terraform.tfvars vapp_vm.tf variables.tf
variables.tf ファイル
変数の定義をまとめて記載しておきます。
terraform.tfvars ファイル
変数をまとめて記載しておきます。(今回くらいの .tf ファイルでは冗長だったかもしれない)
cred.auto.tfvars ファイル
変数のうち、VCD に接続するユーザー / パスワードのみファイルを分割してあります。(暗号化などはしませんが、取りまわしやすいかなと思い)
provider.tf ファイル
VCD Provider 関連の定義情報をまとめました。
network.tf ファイル
vApp に追加する、組織 VDC ネットワークの定義をまとめました。組織 VDC ネットワークは、Terraform 実行前に作成してあるものです。
vapp_vm.tf ファイル
vApp と、仮想マシンの定義を記載してあります。
- catalog-01 カタログの vapp-template-01 テンプレートに含まれる、vm01 と vm02 それぞれから、同名の仮想マシンを作成します。
- 仮想マシンの vNIC は、network.tf で vApp に追加する組織 VCD ネットワークに接続して、IP プールからアドレスを払い出します。
- output で、vNIC に追加された IP アドレスを画面表示します。
3. Terraform の実行
Terraform で作成されるリソースを確認しておきます。
$ terraform plan
Terraform リソースを作成します。
$ terraform apply -auto-approve
terraform apply を実行すると、画面出力の最後に、IP アドレス プールから VM に払い出されたアドレスが表示されます。ただし、今回は外部ネットワーク接続や NAT 設定をしていないため、vApp の外部から仮想マシンにはコンソール経由でしかアクセスできません。
VCD のテナント ポータルでも、vApp と仮想マシンが作成されたことが確認できます。
ちなみに、作成された仮想マシンのゲスト OS へのログイン(root ユーザなど)は、vApp テンプレートを作成した際の設定に従うことになります。
そして作成した環境は、terraform destroy で削除できます。
$ terraform destroy -auto-approve
つづく。