Terraform の Nutanix Provider v2 で、これまでの投稿で作成した Flow Virtual Networking(FVN)のオブジェクト(VPC、Overlay サブネット、仮想マシン)をまとめて作成してみます。
今回の内容です。
今回の環境
これまで、あえて段階的にリソースを展開するために、3回に分割して Terraform で FVN による Overlay サブネットのラボを作成してきました。そのため、tf ファイルのディレクトリも 3つ(tf ファイル群や Terraform の State が 3セット)になっています。
- Terraform で FVN の Overlay サブネットを作成してみる。
そこで今回は、上記のリソースをまとめて 1セットの tf ファイルで作成してみます。以前のリソースが残っている場合は、それぞれの tf ファイルのディレクトリで terraform destory を実行して削除しておきます。
今回のファイル構成
新規作成したディレクトリに、下記のようにファイルを作成します。
$ tree --charset=ascii ./ ./ |-- cloud-init_nutanix.yml |-- data.tf |-- prism.auto.tfvars |-- provider.tf |-- subnet-overlay_v2_overlay-01.tf |-- subnet-overlay_v2_overlay-02.tf |-- variable.tf |-- vm_v2_vm01.tf |-- vm_v2_vm02.tf |-- vm_v2_vm03.tf `-- vpc_v2.tf
1. tf ファイルの作成
Terraform の .tf ファイルを作成します。今回もリソース単位でファイルを分割しています。
前回の投稿と同じ tf ファイル
以前の投稿 で作成した下記のファイルは、そのままコピーして利用します。
- provider.tf
- variable.tf
- prism.auto.tfvars
data.tf
データ ソースには、Nutanix クラスタと、仮想マシン イメージを登録しておきます。
vpc_v2.tf
VPC「vpc-01」を作成します。
subnet-overlay_v2_overlay-01.tf
Overlay サブネット「overlay-01」を作成します。
- L1:リソースの名前は、nutanix_subnet_v2.overlay1 にします。
- L2:サブネットの名前は、overlay-01
- L10-L11:ネットワーク アドレスは、10.0.1.0/24
- L13:ゲートウェイは、10.0.1.1
subnet-overlay_v2_overlay-02.tf
Overlay サブネット「overlay-02」を作成します。
- L1:リソースの名前は、1つと重複しないように ~.overlay2 にします。
- L2:サブネットの名前は、overlay-02
- L10-L11:ネットワーク アドレスは、10.0.2.0/24
- L13:ゲートウェイは、10.0.2.1
vm_v2_vm01.tf
仮想マシン「vm01」を作成する tf ファイルです。
- L1:リソース名は、nutanix_virtual_machine_v2.vm1 にします。
- L2:仮想マシン名は、vm01
- L27:Overlay セグメント「overlay-01」(リソース名は nutanix_subnet_v2.overlay1)の UUID(ext_id)を指定します。Resource として作成したものをそのまま参照できるので、今回はデータ ソースで取得していません。
- L29-L30:IP アドレスは、10.0.1.101 を静的に設定します。
- L45:Cloud-init スクリプトとして、cloud-init_nutanix.yml ファイルを Base64 エンコードした文字列を読み込みます。
vm_v2_vm02.tf
仮想マシン「vm02」を作成する tf ファイルです。vm01 の tf ファイルとの差分は下記です。
- L1:リソース名は、他と重複しないように ~.vm2 にします。
- L2:仮想マシン名は、vm02
- L29-L30:IP アドレスは、10.0.1.102 を静的に設定します。
vm_v2_vm03.tf
仮想マシン「vm03」を作成する tf ファイルです。vm01 の tf ファイルとの差分は下記です。
- L1:リソース名は、他と重複しないように ~.vm3 にします。
- L2:仮想マシン名は、vm03
- L27:Overlay セグメント「overlay-02」(リソース名は nutanix_subnet_v2.overlay2)の UUID(ext_id)を指定します。
- L29-L30:IP アドレスは、10.0.2.101 を静的に設定します。
cloud-init_nutanix.yml
Cloud-init スクリプトは、これまでの投稿と同じものを使用します。
2. リソースの作成
初回実行時には、terraform init コマンドで tf ファイルのディレクトリを初期化します。
$ terraform init
そして、terraform apply でリソースを作成します。
$ terraform plan $ terraform apply -auto-approve
Terraform の State は、下記のように登録されます。
$ terraform state list data.nutanix_clusters_v2.cluster1 data.nutanix_images_v2.image1 nutanix_subnet_v2.overlay1 nutanix_subnet_v2.overlay2 nutanix_virtual_machine_v2.vm1 nutanix_virtual_machine_v2.vm2 nutanix_virtual_machine_v2.vm3 nutanix_vpc_v2.vpc1
そして、リソースを削除するには、これまで通り terraform destroy を実行します。
$ terraform destroy -auto-approve
つづく。