Terraform の Nutanix Provider v2 で、Flow Virtual Networking(FVN)の VPC ~ 仮想マシンのセット作成してみます。今回は、VPC、Overlay サブネット、仮想マシンの tf ファイルをモジュール化して、複数の VPC 環境を作成してみます。
今回の内容です。
- 今回の環境
- 今回の tf ファイル構成
- 1. tf ファイルの作成(1_ext-subnet ディレクトリ)
- 2. tf ファイルの作成(2_vpc ディレクトリ)
- 3. External Subnet の作成
- 4. VPC ~ 仮想マシンの作成
- リソースの削除
今回の環境
FVN を有効化してある Nutanix クラスタで、External Subnet として VLAN サブネットを作成しておき、そこに複数の VPC を作成します。
今回の tf ファイル構成
ディレクトリには、下記のようにファイルを作成します。今回も tf ファイルを 2つのディレクトリ(1_ext-subnet と 2_vpc)に分割してあるので、Terraform の State も分割されます。
$ tree --charset=ascii ./ ./ |-- 1_ext-subnet | |-- data_cluster_v2.tf | |-- prism.auto.tfvars | |-- provider.tf | |-- subnet-ext_v2.tf | `-- variable.tf `-- 2_vpc |-- cloud-init_ol-web.yml |-- modules | `-- nutanix-vpclab | |-- data_cluster_v2.tf | |-- data_image_v2.tf | |-- data_subnet-vlan_v2.tf | |-- output.tf | |-- provider.tf | |-- route_v2.tf | |-- subnet-overlay_v2.tf | |-- variables.tf | |-- vm_v2.tf | `-- vpc_v2.tf |-- prism.auto.tfvars |-- provider.tf |-- variable.tf |-- vpc-a.tf `-- vpc-b.tf
1. tf ファイルの作成(1_ext-subnet ディレクトリ)
1_ext-subnet ディレクトリには、External Subnet を作成する tf ファイルを格納します。このディレクトリに配置するファイルは、以前の投稿 で作成したものと同じ内容で作成しておきます。
- provider.tf
- variable.tf
- prism.auto.tfvars
Nutanix クラスタのデータ ソースと External Subnet リソースの tf ファイルは下記のように作成します。この2つのファイルは、Part-04 の投稿 と同じ内容です。
data_cluster_v2.tf
subnet-ext_v2.tf
2. tf ファイルの作成(2_vpc ディレクトリ)
2_vpc ディレクトリには、VPC、Overlay サブネット、仮想マシンを作成する tf ファイルを、モジュール化して格納してあります。
以前の投稿と同内容の tf ファイル
2_overlay-vm ディレクトリ直下の下記のファイルは、以前の投稿 で作成したファイルと同内容のものを、そのまま作成します。
- prism.auto.tfvars
- provider.tf
- variable.tf
Cloud-init スクリプトも、以前の投稿と同様のものを使用します。
modules ディレクトリ
modules ディレクトリ配下に、モジュール化した tf ファイルを格納します。
modules/nutanix-vpclab/provider.tf
modules/nutanix-vpclab/variables.tf
modules/nutanix-vpclab/data_cluster_v2.tf
modules/nutanix-vpclab/data_subnet-vlan_v2.tf
modules/nutanix-vpclab/vpc_v2.tf
modules/nutanix-vpclab/route_v2.tf
modules/nutanix-vpclab/subnet-overlay_v2.tf
modules/nutanix-vpclab/data_image_v2.tf
modules/nutanix-vpclab/vm_v2.tf
modules/nutanix-vpclab/output.tf
vpc-a.tf と vpc-b.tf の内容
モジュールを利用する tf ファイルを、VPC 単位で作成します。
vpc-a.tf
vpc-b.tf
3. External Subnet の作成
External Subnet と VPC を作成するため、1_ext-subnet ディレクトリで terraform コマンドを実行します。
$ cd ./1_ext-subnet/
新規フォルダで terraform コマンドを実行するので、初回のみ「teraform init」を実行します。
$ terraform init
「terraform plan」→「terraform apply」でリソースを作成します。
$ terraform plan $ terraform apply -auto-approve
Terraform の State は下記のように登録されます。
$ terraform state list data.nutanix_clusters_v2.cluster1 nutanix_subnet_v2.ext-subnet1
VPC に設定されてた External IP アドレスは、下記のように確認できます。
$ terraform output vpc_external_ip = [ "192.168.21.27", "192.168.21.28", ]
4. VPC ~ 仮想マシンの作成
Overlay サブネットと仮想マシンを作成するため、2_vpc ディレクトリで terraform コマンドを実行します。
$ cd ../2_vpc/
新規フォルダで terraform コマンドを実行するので、初回のみ「teraform init」を実行します。
$ terraform init
「terraform plan」→「terraform apply」でリソースを作成します。
$ terraform plan $ terraform apply -auto-approve
Terraform の State は下記のように登録されます。
$ terraform state list module.vpc1.data.nutanix_clusters_v2.cluster1 module.vpc1.data.nutanix_images_v2.image1 module.vpc1.data.nutanix_route_tables_v2.table1 module.vpc1.data.nutanix_subnets_v2.ext-subnet1 module.vpc1.nutanix_routes_v2.route1 module.vpc1.nutanix_subnet_v2.overlay1 module.vpc1.nutanix_virtual_machine_v2.vms[0] module.vpc1.nutanix_virtual_machine_v2.vms[1] module.vpc1.nutanix_vpc_v2.vpc1 module.vpc2.data.nutanix_clusters_v2.cluster1 module.vpc2.data.nutanix_images_v2.image1 module.vpc2.data.nutanix_route_tables_v2.table1 module.vpc2.data.nutanix_subnets_v2.ext-subnet1 module.vpc2.nutanix_routes_v2.route1 module.vpc2.nutanix_subnet_v2.overlay1 module.vpc2.nutanix_virtual_machine_v2.vms[0] module.vpc2.nutanix_virtual_machine_v2.vms[1] module.vpc2.nutanix_vpc_v2.vpc1
仮想マシンに設定されてた IP アドレスは、下記のように確認できます。
$ terraform output external_ip_vpc1 = [ "192.168.21.25", "192.168.21.26", ] external_ip_vpc2 = [ "192.168.21.17", "192.168.21.18", ] vm_ip_vpc1 = { "vm-a-01" = "10.0.1.10" "vm-a-02" = "10.0.1.14" } vm_ip_vpc2 = { "vm-b-01" = "10.0.1.16" "vm-b-02" = "10.0.1.10" }
リソースの削除
今回作成したリソースの削除は、2_vpc ディレクトリ → 1_ext-subnet ディレクトリの順で「terraform destroy」を実行します。
2_vpc ディレクトリに移動します。
$ cd ../2_vpc/
terraform destroy で、Overlay サブネットと仮想マシンを削除します。
$ terraform destroy -auto-approve
1_ext-subnet ディレクトリに移動します。
$ cd ../1_ext-subnet/
VPC と External Subnet を削除します。
$ terraform destroy -auto-approve
つづく。