VMware Cloud Director 10.4(VCD)を Terraform で操作してみます。
今回は、vApp に仮想マシンを作成する際に、ゲスト OS の Customization 機能を利用して、root パスワードを設定してみます。
vcd_vapp_vm Customization
- https://registry.terraform.io/providers/vmware/vcd/latest/docs/resources/vapp_vm#customization-block
前回はこちら。
今回の内容です。
1. 今回の環境
ひきつづき、前回と同じ環境を利用しています。
2. Configuration ファイルの準備
Terraform の Configuration ファイル(.tf など)も、1つのファイルを除いて前回と同じものを利用します。前回の vapp_vm.tf ファイルの代わりに、下記のように vapp_vm_customize.tf ファイルを作成しておきます。
vapp_vm_customize.tf ファイル
- vApp「tf-vapp-03」に、仮想マシンを 1つ(vm01)を作成
- 作成する仮想マシン テンプレート(vapp-template-01)は、このラボ構築の流れで利用してた Photon OS 4.0 の OVA をそのまま利用
- ゲスト OS のカスタマイズ(customization)を設定
- root パスワードの自動生成: 無効
- root パスワード: VMware1!
- スクリプトの実行: iptables を停止 & 無効化(ついでに)
前回の投稿で作成した、下記のファイルはそのまま配置しておきます。
- cred.auto.tfvars
- network.tf
- provider.tf
- terraform.tfvars
- variables.tf
3. Terraform の実行
terraform apply を実行して、vApp と仮想マシンを作成します。
$ terraform plan $ terraform apply -auto-approve
実行すると、下記のように仮想マシンが作成されます。今回は、IP プールから払い出されたアドレスが 10.0.1.101 でした。
4. 作成された仮想マシンとゲスト OS の確認
VCD のテナント ポータルから確認すると、tf-vapp-03 vApp に、vm01(IP アドレスは 10.0.1.101)が作成されています。
vm01 で、「ゲスト OS のカスタマイズ」設定を確認すると、期待どおり root ユーザのパスワードに「VMware1!」、スクリプトには iptables を停止&無効化するコマンドが設定されています。
仮想マシンのリモート コンソールから root / VMware1! でログインすると、Customization で指定したスクリプトにより、iptables が停止&無効化されています。
ちなみに、Terraform を実行すると作成される terraform.tfstate ファイルには、Customization で指定したパスワードがそのまま記録されています。今回のようにパスワードを指定せず、自動生成にした場合には、VCD テナント ポータルを開かずに下記のように確認できます。(そして注意も必要です)
$ cat terraform.tfstate | grep -e admin_password -e computer_name "computer_name": "vm01", "admin_password": "VMware1!", "allow_local_admin_password": true,
jq コマンドをインストールしてある環境であれば・・・
# tdnf install -y jq
下記のようにパスワードを確認できたりします。
$ cat terraform.tfstate | jq -r '.resources[] | select(.type=="vcd_vapp_vm") | .instances[0].attributes | [.name, .customization[0].admin_password, .customization[0].auto_generate_password]' [ "vm01", "VMware1!", false ]
つづく・・・