Terraform で VMware Cloud Foundation as a Service の仮想データセンターを構成する
このチュートリアルでは、費用が発生する場合があります。 コスト見積もりツールを使用して、予測使用量に基づいてコスト見積もりを生成します。
このチュートリアルでは、最初のインスタンス プロビジョニング後に、IBM Cloud® for VMware Cloud Foundation as a Service シングルテナントまたはマルチテナントの仮想データ センター (VDC) を運用するための基本的な手順を説明します。 このチュートリアルは、VMware Cloud Foundation as a Service インスタンス と VDC がすでにプロビジョニングされていることを前提としています。 このチュートリアルでは、Terraformテンプレートの例を使いますが、必要であれば、あなたのユースケースに合わせてカスタマイズしたり修正したりすることができます。
目標
このチュートリアルでは、次のことを学びます:
- TerraformでVDCネットワークを作る方法。
- Terraformを使ってVDCネットワーク上に仮想マシン(VM)を作成する方法。
- TerraformでVDCエッジゲートウェイにネットワークアドレス変換(NAT)とファイアウォール(FW)ルールを設定する方法。
次の図は、導入するソリューションの概要を示している。
{: caption="図
- IBM Cloud コンソールを使用して、シングル・テナント・インスタンスに VDC を作成します。 インスタンスには1つ以上のVDCがあるかもしれないので、テスト用に専用のVDCを持つことができる。 この例のVDCは
2 IOPS/GB
ストレージプールだけを使用します。 - VDCが作成されると、エッジ・ゲートウェイと外部ネットワークが自動的に作成される。 外部ネットワークはインターネットアクセスを提供し、6つの使用可能なパブリックIPアドレスを持つ
/29
のIPアドレスブロックが提供されます。 - TerraformテンプレートはVDCネットワーク、VM、ファイアウォール、ネットワークアドレス変換ルールの作成に使われる。 創作は変数によって完全にコントロールされている。 Terraform は VMware Cloud Director API に対してユーザー名とパスワードで認証を行います。 アクセストークンは近い将来サポートされる予定だ。
- 3つのVDCネットワークが作成されます:2つのルーティングされたもの(
application-network-1
とdb-network-1
)と1つの孤立したもの(isolated-network-1
)です。ルーティングされたVDCネットワークはエッジゲートウェイに接続され、アイソレーションされたVDCネットワークは独立したネットワークです。 ニーズに応じてネットワークを増やすことができる。 - ジャンプサーバー(
jump-server-1
)はWindows 2022オペレーティングシステムで作成されます。 サーバーはapplication-network-1
に接続されています。 仮想マシンには、VMコンソール、またはエッジゲートウェイに作成したDNATルールを使用してRDPでアクセスできます。 application-network-1
上に仮想マシン(application-server-1
)が1つ作成されます。application-server-1
には、例えばロギング用の追加ディスクがあります。 ニーズに応じて、さらにVMやディスクを作成することができる。- ある仮想マシンの例(
db-server-1
)は、db-network-1
とisolated-network-1
に2つの別々のvnicsで作成されます。db-server-1
には、データやロギング用に2つのディスクが追加されている。 ニーズに応じて、さらにVMやディスクを作成することができる。 - ソースNAT(SNAT)および宛先NAT(DNAT)ルールは、パブリックネットワークアクセス用に作成されます。 すべてのルーティングされたネットワークに対して、公衆インターネットへのSNATが設定され、アプリケーションサーバーへのアクセスにはDNATが設定されている。
- ファイアウォールルールは、環境へのネットワークアクセスを保護するためにプロビジョニングされる。 ファイアウォールルールを作成するには、ネットワークと個々のIPアドレスに対して静的グループとIPセットを作成します。
このチュートリアルは以下のステップに分かれている:
- サンプル・レポをクローンする
- VDCに関する必要な情報を入手する
- Terraformのテンプレート変数を設定する
- 初期設定、計画、適用
- VMware Cloud Director コンソールに接続します
- インターネット経由でVMに接続し、接続性を検証する
VMware Cloud Director Console を使用した、代替チュートリアル もあります。
開始前に
このチュートリアルでは、以下が必要です。
- IBM Cloud の有料のアカウント。
- ユーザー許可があるか確認してください。 ユーザーアカウントに十分なパーミッション to create and manage VMware Cloud Foundation as a Service resources があることを確認してください。
- 事前にプロビジョニングされたVMware Cloud Foundation as a Serviceシングルテナントインスタンス、
- シングルテナントインスタンス上のVMware Cloud Foundation as a Serviceに事前にプロビジョニングされたVDC、
- IBM Cloud CLI、
- IBM Cloud API KEY、
jq
はJSONファイルを照会する- Terraform と VMware Cloud Director Provider を組み合わせて、Infrastructure as Code を使用してリソースをプロビジョニングします。
ご使用のオペレーティング環境でこれらのツールをダウンロードおよびインストールするための手順は、チュートリアルの概説ガイドに記載されています。
サンプルレポジトリをクローンする
VMware Cloud Foundation as a Service 用の Terraform テンプレート例は GitHub にあります。
ラップトップやインターネットにアクセスできる仮想サーバーなど、ローカル・マシンにサンプル・レポをクローンしてください。
例えば、GitHub CLI を使います:
gh repo clone IBM/vmwaas-terraform-examples
または、 HTTPS に次の URL を記載して使用します
https://github.com/IBM/vmwaas-terraform-examples.git
VDCに関する必要な情報を入手する
前提条件として、IBM Cloud コンソール を使用して、VMware Cloud Foundation as a Serviceシングルテナントインスタンス と、1つ以上のVDC を作成します。
インスタンスとVDCがデプロイされると、コンソールから必要な詳細とVDC IDを収集できます。
VMware Cloud Foundation as a ServiceシングルテナントインスタンスのVMware Cloud Directorコンソールにログインします:
- VMware Cloud Foundation as a Service テーブルで、VMware Cloud Foundation as a Service インスタンス名をクリックします。
- サマリー」 タブで、情報を確認する。
- VDC リージョンの VMware Cloud Director コンソールに初めてアクセスする場合は、管理者認証情報を設定して、初期、複雑、ランダムなパスワードを生成する必要があります。
- VDCの詳細ページで、VMware Cloud Director Console をクリックして、コンソールにアクセスします。
- admin ユーザー名とパスワードを使用して、VMware Cloud Director コンソールに初めてログインします。
- 管理者が VMware Cloud Director コンソールにログインした後、 VMware Cloud Director コンソールへのアクセスを許可するロールを持つ追加ユーザーを作成できます。
VMware Cloud Director Console にログインして、Terraform のデプロイに必要な情報を収集できます。 代わりに、examples リポジトリにある vmwaas.sh
シェルスクリプトを使うこともできます。 スクリプトは、VMware Cloud Foundation as a Service APIを使用してこれらの値を収集します。
スクリプトを使用するには、地域とAPIキーを次のように設定します:
export IBMCLOUD_API_KEY=your-api-key-here
export IBMCLOUD_REGION=region-here
デフォルトのリージョンは us-south
です。
スクリプトの使い方
% ./vmwaas.sh
USAGE : vmwaas [ ins | in | vdcs | vdc | vdcgw | tf | tfvars ]
インスタンスをリストアップする
% ./vmwaas.sh ins
Get instances.
Instances:
NAME DIRECTOR_SITE_ID LOCATION STATUS
demo b75efs1c-35df-40b3-b569-1124be37687d us-south-1 ReadyToUse
VDCをリストアップする:
% ./vmwaas.sh vdcs
Get virtual datacenters.
VDCs:
NAME ID DIRECTOR_SITE_ID CRN
vdc-demo 5e37ed2d-54cc-4798-96cf-c363de922ab4 b75efs1c-35df-40b3-b569-1124be37687d crn:v1:bluemix:public:vmware:us-south:...
認証用のTerraform TF_VARを取得する:
% ./vmwaas.sh tfvars vdc-demo
Get variables for Terraform in export format.
TF_VARs:
export TF_VAR_vmwaas_url="https://<your_url>.us-south.vmware.cloud.ibm.com/api"
export TF_VAR_vmwaas_org="f37f3422-e6c4-427e-b277-9fec334b99fb"
export TF_VAR_vmwaas_vdc_name="vdc-demo"
これらをシェルにエクスポートするか、tfvars
オプションを使ってスクリプトの出力として terraform.tfvars
ファイルに追加される terraform.tfvars 行を取得することができます。
Terraformのテンプレート変数を設定する
この例のインフラストラクチャTerraformテンプレートは、vcd-demo-infra
フォルダにあります。
このデモTerraformテンプレートは、2つのルーティングされたVDCネットワークと1つの分離されたVDCネットワーク、3つのVM、SNAT、DNAT、ファイアウォールルールの例で構成される以下のインフラストラクチャの例をデプロイする。
Terraformは VMware Cloud Director Providerを使用し、使用した例での主なプロバイダリソースは以下の通りです:
- vcd_network_routed_v2
- vcd_network_isolated_v2
- vcd_vm
- vcd_nsxt_ip_set
- vcd_nsxt_security_group
- vcd_nsxt_nat_rule
- vcd_nsxt_firewall
このテンプレートの例では、作成はTerraformの変数によって完全に制御されています - 例えばネットワークやVMの数を増やしたい場合でも、実際のTerraformテンプレートを変更する必要はありません。 terraform.tfvars-example
ファイルの例が提供され、値の例が説明とともに提供される。
始める前に、例えば例の terraform.tfvars-example
を terraform.tfvars
にコピーしてください:
cp terraform.tfvars-example terraform.tfvars
ネットワークやVMを追加したり、NATやファイアウォールのルールをカスタマイズしたりと、ニーズに応じて使い分けることができる。
-
インスタンスとVDCにアクセスするために、以下の共通変数を設定する。
# Note. Variable values to access your Director instance. Use the Director portal # to figure our your values here. vmwaas_url = "put-your-director-url-here" # for example "https://abcxyz.us-south.vmware.cloud.ibm.com/api" vmwaas_org = "put-your-org-id-here" vmwaas_vdc_name = "put-your-vdc-name-here" vmwaas_api_token = "" # Note. See VMware Docs to create API token. #vmwaas_user = "put-your-username-here" # Note. When using a username and password, create a new local user in Director for terraform. #vmwaas_password = "put-your-password-here" # Note. When using a username and password, create a new local user in Director for terraform.
APIトークンを作成するには、 VMware Cloud Director Docs を参照してください。
これらの変数については、
vmwaas.sh
スクリプトで示したようにterraform.tfvars
で定義するのではなく、vmwaas_api_token
、vmwaas_user
、vmwaas_password
に対してTF_VAR_という名前の環境変数を作成することもできます。 この場合、terraform.tfvars
の中でこれらの行をコメントアウトしてください。認証方法を変更する場合は、コード内のプロバイダ・ブロックを変更して、別の認証方法を使用する必要があります。
-
VDCネットワークやVMなどを識別・分離するために、共通の名前プレフィックスを設定する。
# Note. Use a common name prefix for each item. item_name_prefix = "demo"
-
VMのDNSサーバーを定義する。
VM で IBM Cloud Public DNS サーバーを使用することも、独自のものを使用することもできます。
# Note. IBM Cloud DNS servers listed here. # You may also use your own here. dns_servers = ["161.26.1.10","161.26.1.11"]
ここで独自のDNSサーバーを使用する場合は、これらのサーバーにアクセスできるネットワーク接続があることを確認してください。
-
VDCネットワークの定義
VDCネットワークを作成するときは、マップ変数
vdc_networks
を使って、これらのネットワークとIPプールを定義します。# Note. Create VDC networks of type `routed` or # `isolated`. You can define one `static_ip_pool`and one # `dhcp_ip_pool` for each. vdc_networks = { application-network-1 = { description = "Application network 1" type = "routed" subnet = { cidr = "172.26.1.0/24" prefix_length = 24 gateway = "172.26.1.1" static_ip_pool = { start_address = "172.26.1.10" end_address = "172.26.1.100" } dhcp_ip_pool = { start_address = "172.26.1.101" end_address = "172.26.1.199" } } }, db-network-1 = { description = "DB network 1" type = "routed" subnet = { cidr = "172.26.2.0/24" prefix_length = 24 gateway = "172.26.2.1" static_ip_pool = { start_address = "172.26.2.10" end_address = "172.26.2.100" } dhcp_ip_pool = { start_address = "172.26.2.101" end_address = "172.26.2.199" } } }, isolated-network-1 = { description = "Isolated network 1" type = "isolated" subnet = { cidr = "172.26.3.0/24" prefix_length = 24 gateway = "172.26.3.1" static_ip_pool = { start_address = "172.26.3.10" end_address = "172.26.3.100" } dhcp_ip_pool = {} # leave empty for isolated network } }, }
-
仮想マシン構成を定義する。
VMを作成する際には、マップ変数
virtual_machines
を使ってこれらを定義する。# Note. Create VMs inside your VDC. # You can define each one individually and attach multiple networks # and disks. Individual disks are created for each additional disk. # Note. Check the storage profile names and apply to your VMs / disks. # If left empty, default profile is used. virtual_machines = { app-server-1 = { image = { catalog_name = "Public Catalog" template_name = "RedHat-8-Template-Official" } memory = 8192 cpus = 2 cpu_hot_add_enabled = true memory_hot_add_enabled = true storage_profile = "2 IOPS/GB" networks = { 0 = { name = "application-network-1" ip_allocation_mode = "POOL" is_primary = true ip = "" }, } disks = { 0 = { name = "logDisk" size_in_mb = "100" bus_type = "SCSI" bus_sub_type = "VirtualSCSI" bus_number = 1 storage_profile = "" }, } }, db-server-1 = { image = { catalog_name = "Public Catalog" template_name = "RedHat-8-Template-Official" } memory = 8192 cpus = 2 cpu_hot_add_enabled = true memory_hot_add_enabled = true storage_profile = "" networks = { 0 = { name = "db-network-1" ip_allocation_mode = "POOL" is_primary = true ip = "" }, 1 = { name = "isolated-network-1" ip_allocation_mode = "POOL" is_primary = false ip = "" }, } disks = { 0 = { name = "dbDisk" size_in_mb = "100" bus_type = "SCSI" bus_sub_type = "VirtualSCSI" bus_number = 1 storage_profile = "" }, 1 = { name = "dbLogDisk" size_in_mb = "100" bus_type = "SCSI" bus_sub_type = "VirtualSCSI" bus_number = 1 storage_profile = "" }, } }, jump-server-1 = { image = { catalog_name = "Public Catalog" template_name = "Windows-2022-Template-Official" } memory = 8192 cpus = 2 cpu_hot_add_enabled = true memory_hot_add_enabled = true storage_profile = "" networks = { 0 = { name = "application-network-1" ip_allocation_mode = "POOL" is_primary = true ip = "" }, }, disks = {} }, }
-
パブリックIPアドレスマップを定義する。
各VDCは、各VDCとそのエッジ・ゲートウェイ用に6つのパブリックIPアドレスを取得する。 このTerraformテンプレートは、提供されたIPアドレスの連続リストをマップとして扱います。 次の変数
public_ips
は、VDCに提供されているパブリックIPアドレスを記述しています。 キー(例えばpublic-ip-1
)を使えば、実際のIPアドレス(例えばxx.yy.zz.56
)を他の変数に指定しなくても、テンプレート内でIPアドレスを定義し、参照として使うことができます。# Note. Map of available 6 public IPs. You can use these names # in NAT rules. Do not change the map's keys here. public_ips = { public-ip-0 = { name = "public-ip-0" description = "" }, public-ip-1 = { name = "public-ip-1" description = "" }, public-ip-2 = { name = "public-ip-2" description = "" }, public-ip-3 = { name = "public-ip-3" description = "" }, public-ip-4 = { name = "public-ip-4" description = "" }, public-ip-5 = { name = "public-ip-5" description = "" }, }
-
NATルールを定義する。
変数
nat_rules
は、作成するNATルールを定義します。 提供された例をチェックし、あなたのニーズに基づいて修正してください。# Note. You can use `vdc_networks` or `virtual_machines` keys as # address_targets here. Terraform will pick the IP address of # the specific resource and use that in the actual NAT rule. # Note. You can specify the desired actual public IP address # (`external_address`) in the rule, or you can use the # `external_address_list_index`, which will pick the IP # addresses from the allocated IP pool (`edge_gateway_allocated_ips`). # Note. Use Director UI to get the name for the Application # profiles." nat_rules = { dnat-to-app-1 = { rule_type = "DNAT" description = "DNAT rule to app-server-1" external_address_target = "public-ip-1" external_address = "" internal_address_target = "app-server-1" internal_address = "" dnat_external_port = "" app_port_profile = "" logging = false priority = 90 enabled = true }, dnat-to-jump-1 = { rule_type = "DNAT" description = "DNAT rule to jump-server-1" external_address_target = "public-ip-2" external_address = "" internal_address_target = "jump-server-1" internal_address = "" dnat_external_port = "" app_port_profile = "" logging = false priority = 90 enabled = true }, snat-to-internet-1 = { rule_type = "SNAT" description = "SNAT rule to application-network-1" external_address_target = "public-ip-0" external_address = "" internal_address_target = "application-network-1" internal_address = "" snat_destination_address = "" logging = false priority = 100 enabled = true }, snat-to-internet-2 = { rule_type = "SNAT" description = "SNAT rule to db-network-1" external_address_target = "public-ip-0" external_address = "" internal_address_target = "db-network-1" internal_address = "" snat_destination_address = "" logging = false priority = 100 enabled = true }, }
-
ファイアウォールルールの定義に必要なIPセットと静的グループを作成する。
Terraformテンプレートは、NATルールで使用されるパブリックIPアドレスのIPセットを作成する。 また、オンプレミスネットワークやその他のプライベートまたはパブリックIPアドレスなど、追加のIPセットを定義することもできます。
# Note. You need to create IP sets to be used in firewall rules. # You can use the `public_ips` keys here as address_targets, # but you can define IP sets using real IP addresses using a # list `ip_addresses`. ip_sets = { ip-set-on-public-ip-0 = { description = "Public IP 0 - used for SNAT" ip_addresses = [] address_target = "public-ip-0" }, ip-set-on-public-ip-1 = { description = "Public IP 1 - used for DNAT to app-server-1" ip_addresses = [] address_target = "public-ip-1" }, ip-set-on-public-ip-2 = { description = "Public IP 2 - used for DNAT to jump-server-1" ip_addresses = [] address_target = "public-ip-2" }, ip-set-on-public-ip-3 = { description = "Public IP 3" ip_addresses = [] address_target = "public-ip-3" }, ip-set-on-public-ip-4 = { description = "Public IP 4" ip_addresses = [] address_target = "public-ip-4" }, ip-set-on-public-ip-5 = { description = "Public IP 5" ip_addresses = [] address_target = "public-ip-5" }, ip-set-on-premises-networks = { description = "On-premises networks" ip_addresses = ["172.16.0.0/16",] address_target = "" }, }
また、ファイアウォールルールでスタティックグループをソースやターゲットとして使用することもできます。 この例では、ルーティングされたVDCネットワークごとに1つ、およびすべてのルーティングされたVDCネットワークを含む1つの、合計3つの静的グループを作成します。
# Note. You need to create Static Groups to be used in firewall rules. # You can use `vdc_networks` as keys here. security_groups = { sg-application-network-1 = { description = "Static Group for application-network-1" address_targets = ["application-network-1"] }, sg-db-network-1 = { description = "Static Group for db-network-1" address_targets = ["db-network-1"] }, sg-all-routed-networks = { description = "Static Group for all VDC networks" address_targets = ["application-network-1", "db-network-1"] }, }
-
ファイアウォールルールを定義する。
変数
firewall_rules
は、作成するファイアウォールルールを定義します。 提供されている例を参照し、ニーズに応じて変更してください。# Note. Use "ALLOW or "DROP". # Note. Use Director UI to get the name for the Application # profiles." firewall_rules = { app-1-egress = { action = "ALLOW" direction = "OUT" ip_protocol = "IPV4" destinations = [] # These refer to IP sets (ip_sets or nat_rules) or Static Groups (vdc_networks) sources = ["sg-application-network-1", "sg-db-network-1"] # These refer to IP sets (ip_sets or nat_rules) or Static Groups (vdc_networks) system_app_ports = [] logging = false enabled = true }, dnat-to-app-1-ingress = { action = "ALLOW" direction = "IN" ip_protocol = "IPV4" destinations = ["ip-set-on-public-ip-1"] # These refer to IP sets (ip_sets or nat_rules) or Static Groups (vdc_networks) sources = [] # These refer to IP sets (ip_sets or nat_rules) or Static Groups (vdc_networks) system_app_ports = ["SSH","HTTPS","ICMP ALL"] logging = false enabled = true }, dnat-to-jump-1-ingress = { action = "ALLOW" direction = "IN" ip_protocol = "IPV4" destinations = ["ip-set-on-public-ip-2"] # These refer to IP sets (ip_sets or nat_rules) or Static Groups (vdc_networks) sources = [] # These refer to IP sets (ip_sets or nat_rules) or Static Groups (vdc_networks) system_app_ports = ["RDP"] logging = false enabled = true }, }
一般に、公衆インターネット上でRDPを使用することは推奨されない。 上記のルールはあくまで説明のためのものである。
開始、計画、適用
-
Terraformプロジェクトを初期化するには、exampleディレクトリで
terraform init
コマンドを実行し、出力を見てください。以下に例を示します。
% terraform init Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/random... - Finding latest version of vmware/vcd... - Installing hashicorp/random v3.4.3... - Installed hashicorp/random v3.4.3 (signed by HashiCorp) - Installing vmware/vcd v3.8.2... - Installed vmware/vcd v3.8.2 (signed by a HashiCorp partner, key ID 8BF53DB49CDB70B0) Partner and community providers are signed by their developers. If you'd like to know more about provider signing, you can read about it here: https://www.terraform.io/docs/cli/plugins/signing.html Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
-
次に、
terraform plan
を実行して、何がデプロイされるかを確認することができます。% terraform plan data.vcd_resource_list.list_of_vdcs: Reading... data.vcd_resource_list.list_of_vdc_edges: Reading... data.vcd_resource_list.list_of_catalog_items: Reading... data.vcd_nsxt_app_port_profile.system["SSH"]: Reading... data.vcd_nsxt_app_port_profile.system["HTTPS"]: Reading... data.vcd_nsxt_app_port_profile.system["ICMP ALL"]: Reading... data.vcd_org_vdc.org_vdc: Reading... [output omitted] Plan: 29 to add, 0 to change, 0 to destroy.
-
計画の出力をチェックし、すべてが計画通りであれば、
terraform apply
を実行して実際にアセットをデプロイすることができます。以下に例を示します。
% terraform apply --auto-approve data.vcd_resource_list.list_of_vdcs: Reading... data.vcd_resource_list.list_of_vdc_edges: Reading... data.vcd_resource_list.list_of_catalog_items: Reading... data.vcd_nsxt_app_port_profile.system["SSH"]: Reading... data.vcd_nsxt_app_port_profile.system["HTTPS"]: Reading... data.vcd_nsxt_app_port_profile.system["ICMP ALL"]: Reading... data.vcd_org_vdc.org_vdc: Reading... [output omitted] Apply complete! Resources: 29 added, 0 changed, 0 destroyed.
-
上記の例に加え、terraformではいくつかの変数を
outputs
として提供しています。 これらのoutput
値をチェックして、例えば、VMにアクセスするためのIPアドレスやその他のアクセス情報を取得します。例えば、
terraform output created_virtual_machines
を実行すると、VMへのアクセス情報を得ることができる:% terraform output created_virtual_machines { "app-server-1" = { "admin_password" = "<omitted>" "name" = "demo-app-server-1" "network" = [ { "ip_address" = "172.26.1.10" "is_primary" = true "name" = "demo-application-network-1" }, ] } "db-server-1" = { "admin_password" = "<omitted>" "name" = "demo-db-server-1" "network" = [ { "ip_address" = "172.26.2.10" "is_primary" = true "name" = "demo-db-network-1" }, { "ip_address" = "172.26.3.10" "is_primary" = false "name" = "demo-isolated-network-1" }, ] } "jump-server-1" = { "admin_password" = "<omitted>" "name" = "demo-jump-server-1" "network" = [ { "ip_address" = "172.26.1.11" "is_primary" = true "name" = "demo-application-network-1" }, ] } }
NATルールと使用されているパブリックIPアドレスを取得するには、
terraform output created_nat_rules
を実行します:% terraform output created_nat_rules { "dnat-to-app-1" = { "dnat_external_port" = "" "external_address" = "xxx.yyy.zzz.19" "internal_address" = "172.26.1.10" "name" = "demo-dnat-to-app-1" "rule_type" = "DNAT" "snat_destination_address" = "" } "dnat-to-jump-1" = { "dnat_external_port" = "" "external_address" = "xxx.yyy.zzz.20" "internal_address" = "172.26.1.11" "name" = "demo-dnat-to-jump-1" "rule_type" = "DNAT" "snat_destination_address" = "" } "snat-to-internet-1" = { "dnat_external_port" = "" "external_address" = "xxx.yyy.zzz.18" "internal_address" = "172.26.1.0/24" "name" = "demo-snat-to-internet-1" "rule_type" = "SNAT" "snat_destination_address" = "" } "snat-to-internet-2" = { "dnat_external_port" = "" "external_address" = "xxx.yyy.zzz.18" "internal_address" = "172.26.2.0/24" "name" = "demo-snat-to-internet-2" "rule_type" = "SNAT" "snat_destination_address" = "" } }
created_fw_rules
、created_ip_sets
でIPセット、created_static_groups
で静的グループ、といった具合です。 以下に例を示します。terraform output created_fw_rules
プロビジョニング後、ファイアウォールルールの例をお客様の標準とニーズに従って調整してください。 これらは、ssh
や RDP
のように、あなたのVMへのパブリック・アクセスを公開する。
VMware Cloud Director コンソールに接続します
VMware Cloud Director コンソールの使用方法とアクセス方法については、代替チュートリアル を参照してください。 導入された資産とエッジゲートウェイの設定方法(FWとNATルール)を確認する。
例えばterraform output
からVMのユーザー名とパスワードを取得する:
terraform output created_virtual_machines
VMware Cloud Director Consoleのコンソールで仮想マシンに接続します:
- Launch Web Console をクリックして、仮想マシンのローカルコンソールを開きます。
- Webコンソールを使用して、ユーザーIDとしてrootを使用し、前のステップでキャプチャしたパスワードを使用して仮想マシンにログインします。
- そうすれば、
www.ibm.com
のようなインターネットリソースにpingを送ることができるはずです。
インターネット経由でVMに接続し、接続性を検証する
最後のステップは、インターネットを通じて仮想マシンに接続し、デプロイメントとネットワーク接続性を検証することです。
インターネット経由で仮想マシンに接続する:
- ラップトップやワークステーションから、パブリックIPアドレス
public-ip-1
にpingを打ったり、app-server-1
にsshを打ったりすることができるはずです。 - RDP を使用して、パブリック IP アドレス
public-ip-2
と前の手順で収集したユーザー名とパスワードを使用して、Jump サーバーjump-server-1
に接続できるはずです。 - 前のステップで作成したFWルール
dnat-to-app-1-ingress
を無効にするには、Consoleを使ってルールとそのStateを編集し、StateをDisabled(灰色)にスライドさせるか、特定のルールのTerraform変数をDrop
に変更してterraform apply --auto-approve
を実行します。 - 前のステップで作成したFWルール
dnat-to-jump-1-ingress
を無効にするには、Consoleを使ってルールとそのStateを編集し、StateをDisabled(灰色)にスライドさせるか、特定のルールのTerraform変数をDrop
に変更してterraform apply --auto-approve
を実行します。
参照資料
VDC の管理の詳細については、次の VMware Cloud Director™ テナントポータルガイドを確認してください:
- 管理組織 VMware クラウドの仮想データセンターネットワーク ディレクター テナントポータル
- VMware Cloud Director テナントポータルでの NSX Edge ゲートウェイの管理
- 仮想マシンに関する作業
プロバイダ、リソース、データソースの詳細情報については、Terraformレジストリを確認してください: