Terraform の Nutanix Provider v2 で、Flow Virtual Networking(FVN)の Overlay サブネットに接続された仮想マシンを作成してみます。
今回の環境
FVN の Overlay サブネットは、前回の投稿で作成してあります。
今回は、作成ずみの Overlay サブネットに、仮想マシン(vm01 と vm02)を作成してみます。
1. tf ファイルの作成
新規ディレクトリに、Terraform の .tf ファイル一式を作成しておきます。今回もファイル分割が多めですが、すべて 1つのファイルに記載しても動作します。
今回のファイル構成
ディレクトリには、下記のようにファイルを作成します。
$ tree --charset=ascii ./ ./ |-- cloud-init_nutanix.yml |-- data.tf |-- prism.auto.tfvars |-- provider.tf |-- variable.tf `-- vm_v2_vm01.tf
前回の投稿の tf ファイル
以前の投稿 で作成したファイル一式も、そのままの内容で作成しておきます。
- provider.tf
- variable.tf
- prism.auto.tfvars
data.tf(データ ソース)
作成ずみリソースの情報を取得する「データ ソース」は、今回は1つのファイルにまとめて記述してみました。
データ ソースでは、下記の情報を取得しています。
- L1~:Nutanix クラスタ:lab-nxce-10
- L5~:Overlay サブネット:overlay-01
- FVN の Overlay サブネットは、「nutanix_subnets_v2」または「nutanix_subnet_v2」データ ソースで取得できるので VLAN サブネットと同様に扱えます。
- L9~:Cloud Image のディスク イメージ:OL9U5_x86_64-kvm-b253.qcow2
vm_v2_vm01.tf
nutanix_virtual_machine_v2 リソースとして、仮想マシン(vm01)を作成します。
以前の投稿 に近い設定にしていますが、今回の Cloud-init では、スクリプトを Base64 エンコードしたものを記述しています。
- L2:仮想マシン名は vm01 です。
- L27:データ ソースで取得した Overlay サブネットの UUID(ext_id)を指定します。
- L28-31:今回は、IP アドレスを静的に設定します。
- L45:Cloud-init スクリプトを、Base64 エンコードした文字列を読み込みます。
Cloud-init スクリプト(cloud-init_nutanix.yml)
vm_v2_vm01.tf ファイルの 45行目の指定した、Cloud-init スクリプトの内容です。以前の投稿での Guided Script 設定とは異なり、nutanix ユーザーでSSH 接続と sudo 実行が可能になります。
2. 仮想マシンの作成(terraform の実行)
前回とは異なるディレクトリで terraform コマンドを実行するので、あらためて「terraform init」を実行します。
$ terraform init
そして、「terraform plan」→「terraform apply」を実行して仮想マシンを作成します。
$ terraform plan $ terraform apply -auto-approve
terraform state は下記のように登録されます。
$ terraform state list data.nutanix_clusters_v2.cluster1 data.nutanix_images_v2.image1 data.nutanix_subnets_v2.overlay1 nutanix_virtual_machine_v2.vm1
Prism Cental でも、仮想マシン「vm01」が作成され、そのままパワーオンされたことが確認できます。
3. 仮想マシンの追加
下記の投稿のように、Overlay サブネットに仮想マシンを追加してみます。tf ファイルの記述方法はいくつかありますか、今回は仮想マシンのみを記述した tf ファイルを追加します。
vm_v2_vm02.tf
このファイルは、すでに作成してあった vm_v2_vm01.tf をコピーして、下記のみ変更したものです。
- L1:nutanix_virtual_machine_v2 リソース名を vm1 → vm2
- L2:仮想マシン名を vm01 → vm02
- L30:IP アドレスを 10.0.1.101 → 10.0.1.102
そして、terraform apply を実行すると、2台目の仮想マシンが作成されます。
$ terraform plan $ terraform apply -auto-approve
terraform state にも、下記のように「nutanix_virtual_machine_v2.vm2」が追加されます。
$ terraform state list data.nutanix_clusters_v2.cluster1 data.nutanix_images_v2.image1 data.nutanix_subnets_v2.overlay1 nutanix_virtual_machine_v2.vm1 nutanix_virtual_machine_v2.vm2
追加した仮想マシンのみを削除したい場合は、vm_v2_vm02.tf ファイルを削除して、terraform apply を実行します。
おまけ:リソースの削除
仮想マシンを削除するには、tf ファイル一式を配置してあるディレクトリでそのまま terraform destroy を実行します。
$ terraform destroy -auto-approve
つづく。