vm.gowatana.jp

NEOにほんごVMware(仮)

VMware Cloud Director 10.4 を Terraform で操作してみる。Part-03 vApp VM のゲスト OS カスタマイズ

VMware Cloud Director 10.4(VCD)を Terraform で操作してみます。

今回は、vApp に仮想マシンを作成する際に、ゲスト OS の Customization 機能を利用して、root パスワードを設定してみます。

vcd_vapp_vm Customization

 

前回はこちら。

 

今回の内容です。

 

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 を停止 & 無効化(ついでに)

gist.github.com

 

前回の投稿で作成した、下記のファイルはそのまま配置しておきます。

  • 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
]

 

つづく・・・