Konfigurieren eines virtuellen Rechenzentrums in VMware Cloud Foundation as a Service mit Terraform
Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.
Dieses Tutorial demonstriert die grundlegenden Schritte zur Inbetriebnahme eines IBM Cloud® for VMware Cloud Foundation as a Service ein- oder mehrmandantenfähigen virtuellen Rechenzentrums (VDC) nach der anfänglichen Instanzbereitstellung. Dieses Tutorial sollte etwa 20-30 Minuten in Anspruch nehmen und setzt voraus, dass eine VMware Cloud Foundation as a Service Instanz und ein VDC bereits bereitgestellt wurden. In diesem Tutorial wird ein Beispiel-Terraform-Template verwendet, das bei Bedarf für Ihren Anwendungsfall angepasst und verändert werden kann.
Ziele
In diesem Lernprogramm lernen Sie:
- Wie man VDC-Netzwerke mit Terraform erstellt.
- Wie Sie mit Terraform virtuelle Maschinen (VMs) in Ihren VDC-Netzwerken erstellen.
- So konfigurieren Sie Network Address Translation (NAT) und Firewall (FW)-Regeln auf Ihrem VDC-Edge-Gateway mit Terraform.
Das folgende Diagramm gibt einen Überblick über die zu implementierende Lösung.
- Verwenden Sie IBM Cloud Console, um ein VDC in Ihrer Single Tenant-Instanz zu erstellen. Ihre Instanz kann ein oder mehrere VDCs haben, so dass Sie ein spezielles VDC für Testzwecke haben können. Dieses Beispiel-VDC verwendet nur einen
2 IOPS/GB
Speicherpool. - Wenn ein VDC erstellt wird, werden automatisch ein Edge Gateway und externe Netzwerke erstellt. Externes Netzwerk bietet Ihnen Internetzugang, und ein IP-Adressblock von
/29
mit 6 nutzbaren öffentlichen IP-Adressen wird bereitgestellt. - Terraform-Vorlagen werden verwendet, um VDC-Netzwerke, VMs sowie Firewall- und Netzwerkadressübersetzungsregeln zu erstellen. Die Erstellung wird durch Variablen vollständig kontrolliert. Terraform authentifiziert sich bei der VMware Cloud Director API mit einem Benutzernamen und einem Passwort. Access Token werden in naher Zukunft unterstützt.
- Es werden drei VDC-Netze erstellt: zwei geroutete (
application-network-1
unddb-network-1
) und ein isoliertes (isolated-network-1
). Geroutete VDC-Netzwerke sind mit dem Edge-Gateway verbunden, während das isolierte VDC-Netzwerk ein eigenständiges Netzwerk ist. Sie können je nach Bedarf weitere Netzwerke erstellen. - Ein Jump-Server (
jump-server-1
) wird mit dem Betriebssystem Windows 2022 erstellt. Der Server ist mit demapplication-network-1
verbunden. Sie können auf die virtuelle Maschine über die VM-Konsole oder per RDP über die auf dem Edge Gateway erstellte DNAT-Regel zugreifen. - Eine virtuelle Maschine (
application-server-1
) wird aufapplication-network-1
erstellt. Dieapplication-server-1
hat eine zusätzliche Platte z.B. für die Protokollierung. Sie können je nach Bedarf weitere VMs oder Festplatten erstellen. - Eine virtuelle Maschine (
db-server-1
) wird aufdb-network-1
undisolated-network-1
mit zwei separaten vnics erstellt. Derdb-server-1
hat zwei zusätzliche Festplatten z.B. für Daten und Protokollierung. Sie können je nach Bedarf weitere VMs oder Festplatten erstellen. - Quell-NAT (SNAT) und Ziel-NAT (DNAT) Regeln werden für den öffentlichen Netzzugang erstellt. SNAT zum öffentlichen Internet ist für alle gerouteten Netzwerke konfiguriert, und DNAT ist für den Zugriff auf den Anwendungsserver konfiguriert.
- Firewall-Regeln werden eingerichtet, um den Netzzugang zur Umgebung zu sichern. Um Firewall-Regeln zu erstellen, werden statische Gruppen und IP-Sets für Netzwerke und einzelne IP-Adressen erstellt.
Dieses Tutorial ist in die folgenden Schritte unterteilt:
- Beispielrepositorium klonen
- Erhalten Sie die erforderlichen Informationen über Ihr VDC
- Konfigurieren Sie Terraform-Vorlagenvariablen
- Initieren, planen und anwenden
- Verbinden Sie sich mit der VMware Cloud Director Konsole
- Verbinden Sie sich mit den VMs über das Internet und überprüfen Sie die Konnektivität
Eine alternative Anleitung mit VMware Cloud Director Console ist ebenfalls verfügbar.
Vorbereitende Schritte
Für dieses Lernprogramm ist Folgendes erforderlich:
- Abrechnungsfähiges IBM Cloud-Konto
- Überprüfen Sie die Benutzerberechtigungen. Stellen Sie sicher, dass Ihr Benutzerkonto über ausreichende Berechtigungen zur Erstellung und Verwaltung von VMware Cloud Foundation as a Service verfügt.
- Eine vorab bereitgestellte VMware Cloud Foundation as a Service Single-Tenant-Instanz,
- Ein vorbereiteter VDC auf der VMware Cloud Foundation as a Service Single-Tenant-Instanz,
- IBM Cloud CLI,
- IBM Cloud API KEY,
jq
zur Abfrage von JSON-Dateien, und- Terraform mit VMware Cloud Director Provider zur Nutzung von Infrastructure as Code zur Bereitstellung von Ressourcen.
Anweisungen zum Herunterladen und Installieren dieser Tools für Ihre Betriebsumgebung finden Sie in der Anleitung zur Einführung in die Lernprogramme.
Beispiel-Repository klonen
Die Terraform-Beispielvorlagen für VMware Cloud Foundation as a Service befinden sich in GitHub.
Klonen Sie das Beispiel-Repository auf Ihren lokalen Rechner, zum Beispiel einen Laptop oder einen virtuellen Server mit Internetzugang.
Zum Beispiel mit GitHub CLI:
gh repo clone IBM/vmwaas-terraform-examples
Oder über HTTPS mit der folgenden URL:
https://github.com/IBM/vmwaas-terraform-examples.git
Beschaffen Sie sich die erforderlichen Informationen über Ihr VDC
Als Voraussetzung verwenden Sie die IBM Cloud Konsole, um Ihre VMware Cloud Foundation as a Service Single-Tenant-Instanz und ein oder mehrere VDCs darauf zu erstellen.
Sobald die Instanz und das VDC bereitgestellt wurden, können Sie die erforderlichen Details und VDC-IDs in der Konsole erfassen.
Melden Sie sich bei der VMware Cloud Foundation as a Service Single-Tenant-Instanz in der VMware Cloud Director-Konsole an:
- Klicken Sie in der Tabelle VMware Cloud Foundation as a Service auf einen VMware Cloud Foundation as a Service Instanznamen.
- Überprüfen Sie die Informationen auf der Registerkarte Zusammenfassung.
- Wenn Sie zum ersten Mal auf die VMware Cloud Director-Konsole für die VDC-Region zugreifen, müssen Sie die Admin-Anmeldeinformationen festlegen, um ein anfängliches, komplexes und zufälliges Passwort zu generieren.
- Klicken Sie auf der VDC-Detailseite auf VMware Cloud Director Console, um die Konsole aufzurufen.
- Verwenden Sie den Benutzernamen und das Kennwort admin, um sich zum ersten Mal bei der VMware Cloud Director-Konsole anzumelden.
- Nachdem sich der Administrator bei der VMware Cloud Director-Konsole angemeldet hat, können Sie weitere Benutzer erstellen, die über Rollen verfügen, die ihnen den Zugriff auf die VMware Cloud Director-Konsole ermöglichen.
Sie können sich bei der VMware Cloud Director-Konsole anmelden, um die erforderlichen Informationen für Ihren Terraform-Einsatz zu sammeln. Alternativ können Sie das mitgelieferte vmwaas.sh
Shell-Skript aus dem Beispiel-Repository
verwenden. Das Skript sammelt diese Werte mit der VMware Cloud Foundation as a Service API.
Um das Skript zu verwenden, konfigurieren Sie Ihre Region und Ihren API-Schlüssel mit:
export IBMCLOUD_API_KEY=your-api-key-here
export IBMCLOUD_REGION=region-here
Der Standardbereich ist us-south
.
Verwendung des Skripts:
% ./vmwaas.sh
USAGE : vmwaas [ ins | in | vdcs | vdc | vdcgw | tf | tfvars ]
Um Ihre Instanzen aufzulisten:
% ./vmwaas.sh ins
Get instances.
Instances:
NAME DIRECTOR_SITE_ID LOCATION STATUS
demo b75efs1c-35df-40b3-b569-1124be37687d us-south-1 ReadyToUse
Um Ihre VDCs aufzulisten:
% ./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:...
Um Terraform TF_VARs für die Authentifizierung zu erhalten:
% ./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"
Sie können diese in Ihre Shell exportieren, oder Sie können die terraform.tfvars Zeilen mit der Option tfvars
als Ausgabe des Skripts in terraform.tfvars
Dateien einfügen lassen.
Konfigurieren Sie Terraform-Vorlagenvariablen
Diese Beispiel-Infrastruktur-Terraform-Vorlage befindet sich im Ordner vcd-demo-infra
.
Diese Demo-Terraform-Vorlage stellt die folgende Beispielinfrastruktur bereit, die aus zwei gerouteten und einem isolierten VDC-Netzwerk, drei VMs sowie Beispiel-SNAT, DNAT und Firewall-Regeln besteht.
Terraform verwendet VMware Cloud Director Provider und die wichtigsten Provider-Ressourcen im verwendeten Beispiel sind:
- 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
In dieser Beispielvorlage wird die Erstellung vollständig durch Terraform-Variablen gesteuert - Sie müssen die eigentliche Terraform-Vorlage nicht ändern, wenn Sie beispielsweise mehr Netzwerke oder VMs benötigen. Eine terraform.tfvars-example
-Beispieldatei
wird zur Verfügung gestellt, und es werden Beispielwerte mit Erläuterungen angegeben.
Bevor Sie beginnen, kopieren Sie das Beispiel terraform.tfvars-example
z.B. nach terraform.tfvars
:
cp terraform.tfvars-example terraform.tfvars
Sie können es als solches verwenden, weitere Netzwerke und VMs hinzufügen und NAT- oder Firewall-Regeln usw. nach Ihren Bedürfnissen anpassen.
-
Setzen Sie die folgende gemeinsame Variable für den Zugriff auf Ihre Instanz und Ihr 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.
Informationen zum Erstellen eines API-Tokens finden Sie unter VMware Cloud Director Docs.
Für diese Variablen könnten Sie alternativ Umgebungsvariablen mit dem Namen TF_VAR_ für
vmwaas_api_token
,vmwaas_user
undvmwaas_password
anlegen, anstatt sie interraform.tfvars
zu definieren, wie im Skriptvmwaas.sh
gezeigt. In diesem Fall kommentieren Sie diese Zeilen in Ihremterraform.tfvars
aus.Wenn Sie die Authentifizierungsmethode ändern, muss der Anbieterblock im Code geändert werden, um eine andere Authentifizierungsmethode zu verwenden.
-
Legen Sie einen gemeinsamen Namenspräfix fest, um Ihre VDC-Netzwerke, VMs usw. zu identifizieren und zu trennen.
# Note. Use a common name prefix for each item. item_name_prefix = "demo"
-
Definieren Sie DNS-Server für die VMs.
Sie können IBM Cloud Public DNS Server in Ihren VMs verwenden, oder Sie können Ihren eigenen verwenden.
# Note. IBM Cloud DNS servers listed here. # You may also use your own here. dns_servers = ["161.26.1.10","161.26.1.11"]
Wenn Sie hier Ihre eigenen DNS-Server verwenden, stellen Sie sicher, dass Sie über eine Netzwerkverbindung verfügen, um diese zu erreichen.
-
Definieren Sie VDC-Netze.
Beim Erstellen von VDC-Netzwerken verwenden Sie die Map-Variable
vdc_networks
, um diese und ihre IP-Pools zu definieren.# 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 } }, }
-
Definieren Sie Konfigurationen für virtuelle Maschinen.
Bei der Erstellung von VMs verwenden Sie die Map-Variable
virtual_machines
, um diese zu definieren.# 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 = {} }, }
-
Definieren Sie die Zuordnung öffentlicher IP-Adressen.
Jedes VDC erhält 6 öffentliche IP-Adressen für jedes VDC und sein Edge-Gateway. Diese Terraform-Vorlage behandelt die angegebene fortlaufende Liste von IP-Adressen als eine Karte. Die folgende Variable
public_ips
beschreibt die für Ihr VDC bereitgestellten öffentlichen IP-Adressen. Sie können die Schlüssel (z.B.public-ip-1
) verwenden, um eine IP-Adresse in der Vorlage zu definieren und als Referenz zu verwenden, ohne die tatsächliche IP-Adresse (z.B.xx.yy.zz.56
) in den anderen Variablen zu spezifizieren.# 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 = "" }, }
-
Definieren Sie NAT-Regeln.
Die Variable
nat_rules
definiert die zu erstellenden NAT-Regeln. Prüfen Sie die mitgelieferten Beispiele und ändern Sie sie nach Ihren Bedürfnissen.# 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 }, }
-
Erstellen Sie IP-Sets und statische Gruppen, die für die Definition von Firewall-Regeln benötigt werden.
Die Terraform-Vorlage erstellt IP-Sets für die in den NAT-Regeln verwendeten öffentlichen IP-Adressen. Sie können auch zusätzliche IP-Sets definieren, z. B. für Ihre firmeninternen Netzwerke oder andere private oder öffentliche IP-Adressen.
# 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 = "" }, }
Sie können auch statische Gruppen in Firewall-Regeln als Quellen und Ziele verwenden. In diesem Beispiel werden drei statische Gruppen erstellt, eine für jedes geroutete VDC-Netzwerk und eine, die alle gerouteten VDC-Netzwerke umfasst.
# 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"] }, }
-
Definieren Sie Firewall-Regeln.
Die Variable
firewall_rules
definiert die zu erstellenden Firewall-Regeln. Sehen Sie sich die mitgelieferten Beispiele an und ändern Sie sie nach Ihren Bedürfnissen.# 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 }, }
Im Allgemeinen wird davon abgeraten, RDP über das öffentliche Internet zu verwenden. Die oben aufgeführte Regel dient nur zur Veranschaulichung.
Initiieren, planen und anwenden
-
Um Ihr Terraform-Projekt zu initialisieren, führen Sie den Befehl
terraform init
im Beispielverzeichnis aus und beobachten Sie die Ausgabe.Beispiel:
% 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.
-
Als nächstes können Sie
terraform plan
ausführen, um zu sehen, was bereitgestellt wird.% 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.
-
Überprüfen Sie die Ausgabe Ihres Plans, und wenn alles wie geplant aussieht, können Sie
terraform apply
ausführen, um die Anlagen tatsächlich zu verteilen.Beispiel:
% 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.
-
Zusätzlich zu den obigen Beispielen bietet terraform einige Variablen als
outputs
. Überprüfen Sie dieseoutput
Werte, um z.B. die IP-Adressierung und andere Zugangsinformationen für den Zugriff auf Ihre VMs zu erhalten.Sie können zum Beispiel
terraform output created_virtual_machines
ausführen, um Zugriffsinformationen zu Ihren VMs zu erhalten:% 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" }, ] } }
Um die NAT-Regeln und die verwendeten öffentlichen IP-Adressen zu erhalten, können Sie
terraform output created_nat_rules
ausführen:% 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" = "" } }
Sie können die konfigurierten Firewall-Regeln durch eine Ausgabe
created_fw_rules
, IP-Sets mitcreated_ip_sets
und statische Gruppen mitcreated_static_groups
usw. erhalten. Beispiel:terraform output created_fw_rules
Stellen Sie nach der Einrichtung sicher, dass Sie die Beispiel-Firewall-Regeln entsprechend Ihren Standards und Bedürfnissen anpassen. Sie ermöglichen den öffentlichen Zugriff auf Ihre VMs, wie ssh
und RDP
, die hier
nur zu Demonstrationszwecken konfiguriert sind.
Verbinden mit der VMware Cloud Director-Konsole
Lesen Sie das alternative Tutorial zur Verwendung und zum Zugriff auf VMware Cloud Director Console. Überprüfen Sie die bereitgestellten Ressourcen und die Konfiguration des Edge Gateway (FW und NAT-Regeln).
Holen Sie sich die Benutzernamen und Passwörter der VMs zum Beispiel aus der Terraform output
:
terraform output created_virtual_machines
So verbinden Sie sich mit der virtuellen Maschine mit Konsole in VMware Cloud Director Console:
- Klicken Sie auf Launch Web Console, um eine lokale Konsole für die virtuelle Maschine zu öffnen.
- Melden Sie sich über die Web-Konsole bei der virtuellen Maschine an, indem Sie root als Benutzer-ID und das im vorherigen Schritt ermittelte Passwort verwenden.
- Sie sollten dann in der Lage sein, Internetressourcen wie
www.ibm.com
anzupingen, was zeigt, dass das Netzwerk vollständig ist und funktioniert.
Verbinden Sie sich mit den VMs über das Internet und überprüfen Sie die Konnektivität
Der letzte Schritt besteht darin, sich über das Internet mit der virtuellen Maschine zu verbinden, um die Bereitstellung und die Netzwerkkonnektivität zu überprüfen.
So stellen Sie eine Verbindung zur virtuellen Maschine über das Internet her:
- Sie sollten in der Lage sein, die öffentliche IP-Adresse
public-ip-1
anzupingen und von Ihrem Laptop oder Ihrer Workstation aus per ssh auf Ihreapp-server-1
zuzugreifen, was zeigt, dass das Netzwerk vollständig ist und funktioniert. - Sie sollten in der Lage sein, mit RDP eine Verbindung zu Ihrem Jump Server
jump-server-1
herzustellen, indem Sie die öffentliche IP-Adressepublic-ip-2
und den im vorherigen Schritt erfassten Benutzernamen und das Passwort verwenden. - Sie können dann die im vorherigen Schritt erstellte FW-Regel
dnat-to-app-1-ingress
deaktivieren, indem Sie die Regel und ihren Status bearbeiten, indem Sie den Status über die Konsole auf Disabled (grau) schieben, oder Sie können die Terraform-Variable in der spezifischen Regel aufDrop
ändern undterraform apply --auto-approve
ausführen. - Sie können dann die im vorherigen Schritt erstellte FW-Regel
dnat-to-jump-1-ingress
deaktivieren, indem Sie die Regel und ihren Status bearbeiten, indem Sie den Status über die Konsole auf Disabled (grau) schieben, oder Sie können die Terraform-Variable in der spezifischen Regel aufDrop
ändern undterraform apply --auto-approve
ausführen.
Referenzmaterial
In den folgenden VMware Cloud Director™ Tenant Portal Guides finden Sie detaillierte Informationen zur Verwaltung von VDCs:
- Verwaltung von Netzwerken virtueller Rechenzentren in der VMware Cloud Director Tenant Portal
- Verwaltung von NSX Edge Gateways im VMware Cloud Director Tenant Portal
- Mit virtuellen Maschinen arbeiten
In der Terraform-Registry finden Sie weitere Informationen über den Provider, die Ressourcen und die Datenquellen: