NTNX>日記

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

Terraform で FVN の Overlay サブネットを作成してみる。Part-04:VPC & サブネット & 仮想マシンの作成

Terraform の Nutanix Provider v2 で、これまでの投稿で作成した Flow Virtual Networking(FVN)のオブジェクト(VPC、Overlay サブネット、仮想マシン)をまとめて作成してみます。

今回の内容です。

今回の環境

これまで、あえて段階的にリソースを展開するために、3回に分割して Terraform で FVN による Overlay サブネットのラボを作成してきました。そのため、tf ファイルのディレクトリも 3つ(tf ファイル群や Terraform の State が 3セット)になっています。

 

そこで今回は、上記のリソースをまとめて 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 クラスタと、仮想マシン イメージを登録しておきます。

gist.github.com

 

vpc_v2.tf

VPC「vpc-01」を作成します。

gist.github.com

 

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

gist.github.com

 

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

gist.github.com

 

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 エンコードした文字列を読み込みます。

gist.github.com

 

vm_v2_vm02.tf

仮想マシン「vm02」を作成する tf ファイルです。vm01 の tf ファイルとの差分は下記です。

  • L1:リソース名は、他と重複しないように ~.vm2 にします。
  • L2:仮想マシン名は、vm02
  • L29-L30:IP アドレスは、10.0.1.102 を静的に設定します。

gist.github.com

 

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 を静的に設定します。

gist.github.com

 

cloud-init_nutanix.yml

Cloud-init スクリプトは、これまでの投稿と同じものを使用します。

gist.github.com

 

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

 

つづく。

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