Configurar un centro de datos virtual en VMware Cloud Foundation as a Service con Terraform
Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.
Este tutorial muestra los pasos básicos para poner en funcionamiento un IBM Cloud® for VMware Cloud Foundation as a Service centro de datos virtual (VDC) de un solo inquilino o multiinquilino tras el aprovisionamiento inicial de instancias. Este tutorial debería tardar unos 20-30 minutos en completarse y asume que una VMware Cloud Foundation as a Service instancia y un VDC ya han sido aprovisionados. Este tutorial utiliza una plantilla Terraform de ejemplo, que se puede personalizar y modificar para su caso de uso, si es necesario.
Objetivos
En este tutorial aprenderás:
- Cómo crear redes VDC con Terraform.
- Cómo crear máquinas virtuales (VM) en sus redes VDC con Terraform.
- Cómo configurar reglas de traducción de direcciones de red (NAT) y cortafuegos (FW) en su puerta de enlace de borde VDC con Terraform.
El siguiente diagrama presenta una visión general de la solución que se va a implantar.
- Utilice IBM Cloud Console para crear un VDC en su instancia de inquilino único. Su instancia puede tener uno o más VDCs, por lo que puede tener un VDC dedicado para realizar pruebas. Este VDC de ejemplo utiliza sólo un pool de almacenamiento
2 IOPS/GB
. - Cuando se crea un VDC, se crean automáticamente un edge gateway y redes externas. La red externa le proporciona acceso a Internet y se proporciona un bloque de direcciones IP de
/29
con 6 direcciones IP públicas utilizables. - Las plantillas Terraform se utilizan para crear redes VDC, VMs así como reglas de cortafuegos y de traducción de direcciones de red. La creación está totalmente controlada mediante variables. Terraform se autentica en la API VMware Cloud Director con un nombre de usuario y una contraseña. Las fichas de acceso serán compatibles en un futuro próximo.
- Se crean tres redes VDC: dos enrutadas (
application-network-1
ydb-network-1
) y una aislada (isolated-network-1
). Las redes VDC enrutadas están conectadas a la pasarela de borde, mientras que la red VDC aislada es una red independiente. Puedes crear más redes en función de tus necesidades. - Se crea un servidor de salto (
jump-server-1
) con el sistema operativo Windows 2022. El servidor está unido alapplication-network-1
. Puede acceder a la máquina virtual a través de la consola VM o mediante RDP a través de la regla DNAT creada en el Edge Gateway. - Se crea una máquina virtual de ejemplo (
application-server-1
) en elapplication-network-1
. Elapplication-server-1
tiene un disco adicional, por ejemplo, para el registro. Puedes crear más máquinas virtuales o discos en función de tus necesidades. - Se crea una máquina virtual de ejemplo (
db-server-1
) en eldb-network-1
yisolated-network-1
con dos vnics separadas. Eldb-server-1
tiene dos discos adicionales, por ejemplo, para datos y registro. Puedes crear más máquinas virtuales o discos en función de tus necesidades. - Las reglas NAT de origen (SNAT) y NAT de destino (DNAT) se crean para el acceso a la red pública. La SNAT a la Internet pública está configurada para todas las redes enrutadas y la DNAT está configurada para acceder al servidor de aplicaciones.
- Se establecen reglas de cortafuegos para proteger el acceso de la red al entorno. Para crear reglas de cortafuegos, se crean Grupos estáticos y Conjuntos IP para redes y direcciones IP individuales.
Este tutorial se divide en los siguientes pasos:
- Clonar repo de ejemplos
- Obtenga la información necesaria sobre su VDC
- Configurar variables de plantilla de Terraform
- Iniciar, planificar y aplicar
- Conéctese a la consola VMware Cloud Director
- Conéctate a las máquinas virtuales a través de Internet y valida la conectividad
También está disponible un tutorial alternativo utilizando VMware Cloud Director Console.
Antes de empezar
Esta guía de aprendizaje requiere:
- Una IBM Cloud cuenta facturable,
- Compruebe los permisos de usuario. Asegúrese de que su cuenta de usuario tiene permisos suficientes para crear y gestionar VMware Cloud Foundation as a Service recursos.
- Una instancia preaprovisionada VMware Cloud Foundation as a Service single-tenant,
- Un VDC preaprovisionado en la instancia VMware Cloud Foundation as a Service single-tenant,
- IBM Cloud CLI,
- IBM Cloud CLAVE API,
jq
para consultar archivos JSON, y- Terraform con VMware Cloud Director Provider para utilizar Infrastructure as Code para aprovisionar recursos.
Encontrará instrucciones para descargar e instalar estas herramientas para su entorno operativo en la guía de Iniciación a las guías de aprendizaje.
Clonar el repositorio de ejemplos
Las plantillas Terraform de ejemplo para VMware Cloud Foundation as a Service se encuentran en GitHub.
Clona el repositorio de ejemplos en tu máquina local, por ejemplo un portátil o un servidor virtual con acceso a Internet.
Por ejemplo usando GitHub CLI:
gh repo clone IBM/vmwaas-terraform-examples
O utilizando HTTPS con el siguiente URL:
https://github.com/IBM/vmwaas-terraform-examples.git
Obtenga la información necesaria sobre su CDV
Como requisito previo, utilice la IBM Cloud para crear su VMware Cloud Foundation as a Service instancia de inquilino único y uno o más VDC en ella.
Una vez desplegados la instancia y el VDC, puede recopilar los detalles necesarios y los ID de VDC desde la consola.
Inicie sesión en la VMware Cloud Foundation as a Service consola de VMware Cloud Director de la instancia de inquilino único:
- En la tabla VMware Cloud Foundation as a Service, haga clic en un VMware Cloud Foundation as a Service nombre de instancia.
- En la pestaña Resumen, revise la información.
- Si es la primera vez que accede a la consola VMware Cloud Director para la región VDC, debe configurar las credenciales de administrador para generar una contraseña inicial, compleja y aleatoria.
- En la página de detalles del VDC, haga clic en VMware Cloud Director Console para acceder a la consola.
- Utilice el nombre de usuario y la contraseña de administrador para iniciar sesión en la VMware por primera vez.
- Después de que el administrador haya iniciado sesión en la VMware Cloud Director Console, puede crear usuarios adicionales que tengan funciones que les permitan acceder a la VMware Cloud Director Console.
Puede iniciar sesión en la VMware para recopilar la información necesaria para su implementación de Terraform. También puede utilizar el script de shell vmwaas.sh
proporcionado en el repositorio de ejemplos. El script recopilará
estos valores utilizando VMware Cloud Foundation as a Service API.
Para utilizar el script, configure su región y clave API con:
export IBMCLOUD_API_KEY=your-api-key-here
export IBMCLOUD_REGION=region-here
La región por defecto es us-south
.
Uso del guión:
% ./vmwaas.sh
USAGE : vmwaas [ ins | in | vdcs | vdc | vdcgw | tf | tfvars ]
Para listar sus instancias:
% ./vmwaas.sh ins
Get instances.
Instances:
NAME DIRECTOR_SITE_ID LOCATION STATUS
demo b75efs1c-35df-40b3-b569-1124be37687d us-south-1 ReadyToUse
Para listar tus VDCs:
% ./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:...
Para obtener Terraform TF_VARs para la autenticación:
% ./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"
Puede exportarlas a su shell, o puede hacer que las líneas terraform.tfvars se añadan a los archivos terraform.tfvars
como salida del script usando la opción tfvars
.
Configurar las variables de la plantilla de Terraform
Esta plantilla Terraform de infraestructura de ejemplo se encuentra en la carpeta vcd-demo-infra
.
Esta plantilla Terraform de demostración despliega la siguiente infraestructura de ejemplo, que consta de dos redes VDC enrutadas y una aislada, tres máquinas virtuales, así como reglas SNAT, DNAT y de cortafuegos de ejemplo.
{: caption="
El Terraform utiliza VMware Cloud Director Provider y los principales recursos del proveedor en el ejemplo utilizado son:
- vcd_network_routed_v2
- vcd_network_isolated_v2
- vcd_vm
- vcd_nsxt_ip_set
- grupo_seguridad_vcd_nsxt
- vcd_nsxt_nat_rule
- vcd_nsxt_cortafuegos
En esta plantilla de ejemplo, la creación está totalmente controlada a través de variables Terraform - no es necesario cambiar la plantilla Terraform real, por ejemplo, si necesita más redes o VMs. Se proporciona un archivo terraform.tfvars-example
de ejemplo y valores de ejemplo con explicaciones.
Antes de empezar, copie el ejemplo terraform.tfvars-example
en terraform.tfvars
, por ejemplo:
cp terraform.tfvars-example terraform.tfvars
Puedes utilizarlo como tal, añadir más redes, más máquinas virtuales y personalizar las reglas de NAT o cortafuegos, etc. en función de tus necesidades.
-
Establezca la siguiente variable común para acceder a su instancia y 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.
Para crear un token de API, consulte VMware Cloud Director Docs.
Para estas variables, podría crear variables de entorno llamadas TF_VAR_ para
vmwaas_api_token
,vmwaas_user
yvmwaas_password
en lugar de definirlas enterraform.tfvars
como se muestra en el scriptvmwaas.sh
. En este caso, comenta estas líneas en tuterraform.tfvars
.Si cambias el método de autenticación, el bloque de proveedor en el código necesita cambiar para usar un método de autenticación diferente.
-
Establezca un prefijo de nombre común para identificar y separar sus redes VDC, VMs, etc.
# Note. Use a common name prefix for each item. item_name_prefix = "demo"
-
Definir servidores DNS para las máquinas virtuales.
Puede utilizar IBM Cloud en sus máquinas virtuales, o puede utilizar el suyo propio.
# Note. IBM Cloud DNS servers listed here. # You may also use your own here. dns_servers = ["161.26.1.10","161.26.1.11"]
Si utiliza sus propios servidores DNS, asegúrese de que dispone de conectividad de red para acceder a ellos.
-
Definir las redes VDC.
Al crear redes VDC, utilice la variable de mapa
vdc_networks
para definir éstas y sus agrupaciones 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 } }, }
-
Definir configuraciones de máquinas virtuales.
Al crear máquinas virtuales, utilice la variable de mapa
virtual_machines
para definirlas.# 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 = {} }, }
-
Definir mapa de direcciones IP públicas.
Cada VDC obtiene 6 direcciones IP públicas para cada VDC y su pasarela de borde. Esta plantilla de Terraform trata la lista consecutiva de direcciones IP proporcionada como un mapa. La siguiente variable
public_ips
describe las direcciones IP públicas proporcionadas para su VDC. Puede utilizar las claves (por ejemplo,public-ip-1
) para definir y utilizar como referencia una dirección IP en la plantilla sin especificar realmente la dirección IP real (por ejemplo,xx.yy.zz.56
) en las demás variables.# 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 = "" }, }
-
Definir reglas NAT.
La variable
nat_rules
define las reglas NAT a crear. Consulte los ejemplos proporcionados y modifíquelos en función de sus necesidades.# 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 }, }
-
Cree conjuntos de IP y grupos estáticos, necesarios para definir las reglas del cortafuegos.
La plantilla Terraform crea IP Sets para las direcciones IP públicas utilizadas en las reglas NAT. También puede definir conjuntos de IP adicionales, por ejemplo para sus redes locales u otras direcciones IP privadas o públicas.
# 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 = "" }, }
También puede utilizar grupos estáticos en reglas de cortafuegos como orígenes y destinos. Este ejemplo crea tres grupos estáticos, uno para cada red VDC enrutada y uno que incluye todas las redes VDC enrutadas.
# 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"] }, }
-
Definir reglas de cortafuegos.
La variable
firewall_rules
define las reglas de cortafuegos que se van a crear. Consulte los ejemplos proporcionados y modifíquelos en función de sus necesidades.# 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 }, }
Por lo general, no se aconseja utilizar RDP a través de Internet pública. La regla anterior sólo se utiliza a título ilustrativo.
Init, planificar y aplicar
-
Para inicializar su proyecto Terraform, ejecute el comando
terraform init
en el directorio de ejemplo y observe la salida.Por ejemplo:
% 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.
-
A continuación, puede ejecutar
terraform plan
para ver lo que se desplegará.% 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.
-
Compruebe la salida de su plan, y si todo parece según lo previsto, puede ejecutar
terraform apply
para desplegar realmente los activos.Por ejemplo:
% 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.
-
Además de los ejemplos anteriores, terraform proporciona algunas variables como
outputs
. Comprueba estosoutput
valores para obtener, por ejemplo, direcciones IP y otra información de acceso para acceder a tus VMs.Por ejemplo, puede ejecutar
terraform output created_virtual_machines
para obtener información de acceso a sus máquinas virtuales:% 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" }, ] } }
Para obtener las reglas NAT, y las direcciones IP públicas utilizadas puede ejecutar
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" = "" } }
Puede obtener las reglas de firewall configuradas a través de una salida
created_fw_rules
, IP Sets concreated_ip_sets
y Static Groups concreated_static_groups
y así sucesivamente. Por ejemplo:terraform output created_fw_rules
Tras el aprovisionamiento, asegúrese de ajustar las reglas del cortafuegos de ejemplo según sus normas y necesidades. Ellos expondrán el acceso público a sus VMs, como ssh
y RDP
, que se configura aquí sólo para fines
de demostración.
Conéctese a la consola VMware Cloud Director
Consulte el tutorial alternativo sobre cómo utilizar y acceder a VMware Cloud Director Console. Compruebe los activos desplegados y cómo se ha configurado el Edge Gateway (reglas FW y NAT).
Obtenga los nombres de usuario y las contraseñas de las máquinas virtuales del terraform output
, por ejemplo:
terraform output created_virtual_machines
Para conectarse a la máquina virtual con consola en VMware Cloud Director Console:
- Haga clic en Lanzar consola web para abrir una consola local a la máquina virtual.
- Utilizando la consola web, inicie sesión en la máquina virtual utilizando root como ID de usuario y la contraseña que capturó en el paso anterior.
- A continuación, debe ser capaz de hacer ping a recursos de Internet como
www.ibm.com
, mostrando que la red está completa y funcionando.
Conectarse a las máquinas virtuales a través de Internet y validar la conectividad
El último paso consiste en conectarse a la máquina virtual a través de Internet para validar la implantación y la conectividad de red.
Para conectarse a la máquina virtual a través de Internet:
- Usted debe ser capaz de hacer ping a la dirección IP pública
public-ip-1
y ssh a suapp-server-1
desde su ordenador portátil o estación de trabajo, lo que demuestra que la red está completa y funcionando. - Debería poder utilizar RDP para conectarse a su servidor Jump
jump-server-1
utilizando la dirección IP públicapublic-ip-2
y el nombre de usuario y la contraseña recopilados en el paso anterior. - A continuación, puede desactivar la regla FW
dnat-to-app-1-ingress
creada en el paso anterior editando la regla y su Estado deslizando el Estado a Desactivado (gris) mediante la Consola, o puede cambiar la variable Terraform en la regla específica aDrop
y ejecutarterraform apply --auto-approve
. - A continuación, puede desactivar la regla FW
dnat-to-jump-1-ingress
creada en el paso anterior editando la regla y su Estado deslizando el Estado a Desactivado (gris) mediante la Consola, o puede cambiar la variable Terraform en la regla específica aDrop
y ejecutarterraform apply --auto-approve
.
Material de referencia
Consulte las siguientes VMware Cloud Director™ Tenant Portal para obtener información más detallada sobre la gestión de los VDC:
- Gestión de redes de centros de datos virtuales de la organización en el portal del inquilino VMware Cloud Director
- Gestión de NSX Edge Gateways en VMware Cloud Director Tenant Portal
- Trabajo con máquinas virtuales
Consulte el registro de Terraform para obtener información más detallada sobre el proveedor, los recursos y las fuentes de datos: