NTNX>日記

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

Terraform で FVN の NAT VPC を構成してみる。Part-05:セグメントと仮想マシンの作成(Module 化)

Terraform の Nutanix Provider v2 で、Flow Virtual Networking(FVN)の NAT  VPC に Overlay サブネットと仮想マシンを作成してみます。今回は、Overlay サブネットと仮想マシンの tf ファイルをモジュール化してみます。

今回の内容です。

今回の環境

下記の投稿と同様の VPC 環境を、Terraform で作成してみます。

前回の投稿では、tf ファイルをリソースごとの分割して作成してみました。

今回は、Overlay サブネットと仮想マシンを作成する tf ファイルを、モジュールとして分離してみます。

 

今回の tf ファイル構成

ディレクトリには、下記のようにファイルを作成します。tf ファイルを 2つのディレクトリ(1_vpc と 2_overlay-vm)に分割してあるので、Terraform の State も分割されます。

$ tree --charset=ascii ./
./
|-- 1_vpc
|   |-- data_cluster_v2.tf
|   |-- data_route-table_v2.tf
|   |-- output.tf
|   |-- prism.auto.tfvars
|   |-- provider.tf
|   |-- route_v2.tf
|   |-- subnet-ext_v2.tf
|   |-- variable.tf
|   `-- vpc_v2.tf
`-- 2_overlay-vm
    |-- cloud-init_ol-web.yml
    |-- modules
    |   `-- overlay
    |       |-- data_cluster_v2.tf
    |       |-- data_image_v2.tf
    |       |-- data_vpc_v2.tf
    |       |-- output.tf
    |       |-- provider.tf
    |       |-- subnet-overlay_v2.tf
    |       |-- variables.tf
    |       `-- vm_v2.tf
    |-- overlay-11_vm.tf
    |-- overlay-12_vm.tf
    |-- prism.auto.tfvars
    |-- provider.tf
    `-- variable.tf

 

1. tf ファイルの作成(1_vpc ディレクトリ)

1_vpc ディレクトリには、External Subnet と VPC を作成する tf ファイルを格納します。このディレクトリに配置するファイルは、以前の投稿 で作成したものと同じ内容で作成しておきます。

  • provider.tf
  • variable.tf
  • prism.auto.tfvars
  • data_cluster_v2.tf
  • subnet-ext_v2.tf
  • vpc_v2.tf
  • data_route-table_v2.tf
  • route_v2.tf

おまけとして、VPC の External IP アドレス(今回は自動採番)を出力する Output を追加します。

output.tf

gist.github.com

 

2. tf ファイルの作成(2_overlay-vm ディレクトリ)

2_overlay-vm ディレクトリには、Overlay サブネットと仮想マシンを作成する tf ファイルを、モジュール化して格納してあります。

以前の投稿の tf ファイル

2_overlay-vm ディレクトリでも、以前の投稿 で作成した下記のファイル一式をそのままの内容で作成します。

  • prism.auto.tfvars
  • provider.tf
  • variable.tf

 

Cloud-init も、以前の投稿と同様のものを使用します。

 

modules ディレクトリ

modules ディレクトリ配下に、モジュール化した tf ファイルを格納します。

modules/overlay/provider.tf

gist.github.com

 

modules/overlay/variables.tf

gist.github.com

 

modules/overlay/data_cluster_v2.tf

gist.github.com

 

modules/overlay/data_vpc_v2.tf

gist.github.com

 

modules/overlay/subnet-overlay_v2.tf

gist.github.com

 

modules/overlay/data_image_v2.tf

gist.github.com

 

modules/overlay/vm_v2.tf

gist.github.com

 

modules/overlay/output.tf

gist.github.com

 

overlay-11_vm.tf と overlay-12_vm.tf

モジュールを利用する tf ファイルを、Overlay サブネット単位で作成します。

overlay-11_vm.tf

gist.github.com

 

overlay-12_vm.tf

gist.github.com

 

3. VPC の作成

External Subnet と VPC を作成するため、1_vpc ディレクトリで terraform コマンドを実行します。

$ cd ./1_vpc/

新規フォルダで 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
data.nutanix_route_tables_v2.table1
nutanix_routes_v2.route1
nutanix_subnet_v2.ext-subnet1
nutanix_vpc_v2.vpc1

 

VPC に設定されてた External IP アドレスは、下記のように確認できます。

$ terraform output
vpc_external_ip = [
  "192.168.21.27",
  "192.168.21.28",
]

 

4. Overlay サブネットと仮想マシンの作成

Overlay サブネットと仮想マシンを作成するため、2_overlay-vm ディレクトリで terraform コマンドを実行します。

$ cd ../2_overlay-vm/

新規フォルダで terraform コマンドを実行するので、初回のみ「teraform init」を実行します。

$ terraform init

「terraform plan」→「terraform apply」でリソースを作成します。

$ terraform plan
$ terraform apply -auto-approve

Terraform の State は下記のように登録されます。

$ terraform state list
module.overlay1.data.nutanix_clusters_v2.cluster1
module.overlay1.data.nutanix_images_v2.image1
module.overlay1.data.nutanix_vpcs_v2.vpc1
module.overlay1.nutanix_subnet_v2.overlay1
module.overlay1.nutanix_virtual_machine_v2.vms[0]
module.overlay2.data.nutanix_clusters_v2.cluster1
module.overlay2.data.nutanix_images_v2.image1
module.overlay2.data.nutanix_vpcs_v2.vpc1
module.overlay2.nutanix_subnet_v2.overlay1
module.overlay2.nutanix_virtual_machine_v2.vms[0]

仮想マシンに設定されてた IP アドレスは、下記のように確認できます。

$ terraform output
overlay1_vm_ip = {
  "vm11-01" = "10.0.11.12"
}
overlay2_vm_ip = {
  "vm12-01" = "10.0.12.15"
}

 

リソースの削除

今回作成したリソースの削除は、2_overlay-vm ディレクトリ → 1_vpc ディレクトリの順で「terraform destroy」を実行します。

2_overlay-vm ディレクトリに移動します。

$ cd ../2_overlay-vm/

terraform destroy で、Overlay サブネットと仮想マシンを削除します。

$ terraform destroy -auto-approve

1_vpc ディレクトリに移動します。

$ cd ../1_vpc/

VPC と External Subnet を削除します。

$ terraform destroy -auto-approve

 

つづく。

 

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