NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Terraform で FVN の NAT VPC を構成してみる。Part-06:VPC ~ 仮想マシンの作成(Module 化)

Terraform の Nutanix Provider v2 で、Flow Virtual Networking(FVN)の VPC ~ 仮想マシンのセット作成してみます。今回は、VPC、Overlay サブネット、仮想マシンの tf ファイルをモジュール化して、複数の 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

gist.github.com

 

subnet-ext_v2.tf

gist.github.com

 

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

gist.github.com

 

modules/nutanix-vpclab/variables.tf

gist.github.com

 

modules/nutanix-vpclab/data_cluster_v2.tf

gist.github.com

 

modules/nutanix-vpclab/data_subnet-vlan_v2.tf

gist.github.com

 

modules/nutanix-vpclab/vpc_v2.tf

gist.github.com

 

modules/nutanix-vpclab/route_v2.tf

gist.github.com

 

modules/nutanix-vpclab/subnet-overlay_v2.tf

gist.github.com

 

modules/nutanix-vpclab/data_image_v2.tf

gist.github.com

 

modules/nutanix-vpclab/vm_v2.tf

gist.github.com

 

modules/nutanix-vpclab/output.tf

gist.github.com

 

vpc-a.tf と vpc-b.tf の内容

モジュールを利用する tf ファイルを、VPC 単位で作成します。

 

vpc-a.tf

gist.github.com

 

vpc-b.tf

gist.github.com

 

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

 

つづく。

 

©2024 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。