Configurar Módulos Terraform

Los recursos de red necesarios para alojar aplicaciones SaaS de un solo inquilino en Oracle Cloud se definen en módulos Terraform. Descargue los módulos y defina las variables necesarias.

Descarga del código Terraform

El código Terraform de esta solución está disponible en GitHub.

  1. En el panel de navegación de la izquierda, haga clic en Descargar código.
  2. Haga clic en Representante de Git.
  3. Clone o descargue el repositorio en su computadora local.

Acerca de Terraform Code

El código Terraform de esta solución se organiza en varios módulos, cada uno con los recursos para un componente específico de la topología de destino.

El código Terraform contiene los siguientes directorios y archivos en el nivel superior:
  • chef: este directorio contiene las recetas de Chef para instalar y configurar las puertas de enlace de enrutamiento.
  • examples: Este directorio contiene el código Terraform necesario para implantar esta solución. El código de este directorio utiliza los módulos definidos en el directorio modules.
  • LICENSE.txt: Este archivo contiene las condiciones de licencia para el código de ejemplo.
  • modules: este directorio contiene los módulos de Terraform que proporcionan los bloques integrantes para la solución.
  • README.md: este archivo proporciona una breve descripción del código e instrucciones básicas para utilizar el código.
  • test: Este directorio contiene scripts de prueba que puede utilizar para verificar el despliegue.
El directorio examples/full-deployment contiene el código que llama a los módulos de Terraform necesarios para esta solución. Contiene los siguientes subdirectorios y archivos:
examples/full-deployment
├── common
│   ├── compartments
│   └── configuration
├── Makefile
├── management
│   ├── access
│   ├── network
│   ├── server_attachment
│   └── servers
├── peering
│   ├── network
│   └── routing
├── README.md
├── tenant
│   ├── network
│   └── servers
├── terraform.tfvars.sample
└── terragrunt.hcl
Archivo o Directorio de Configuración Recursos definidos en la configuración
common/configuration Ninguna.

El código de este directorio usa el módulo Terraform en examples/network_calculator para calcular el número de VCN de inquilino y las VCN de intercambio necesarias, el tamaño de CIDR de cada VCN y la asignación entre las VCN de inquilino y las VCN de intercambio. Los resultados del cálculo se utilizan cuando se crean las VCN y otros recursos de red.

common/compartments
  • Compartimento de gestión.
  • Uno o más compartimentos para las VCN de intercambio.
  • Compartimento para cada inquilino.
management/access Instancia informática de Oracle Linux asociada a una subred pública en el ISV VCN. Esta instancia es el servidor de base para la topología.
management/network
  • El VCN de ISV, también denominado VCN de gestión.
  • NAT y gateways de Internet para ISV VCN.
  • Las subredes siguientes:
    • Subred de gestión privada del servidor de gestión.
    • Subred de acceso público para el servidor de base.
    • Una subred privada de intercambio de tráfico para las puertas de enlace de enrutamiento
  • Tabla de rutas por defecto para VCN, con una regla para enrutar el tráfico vinculado a Internet público a través de la puerta de enlace de Internet.
  • Una tabla de rutas para la subred de intercambio de tráfico, con una regla para enrutar el tráfico vinculado para Internet público a través del gateway NAT.
  • Lista de seguridad para la subred de acceso, con las siguientes reglas:
    • Permitir el tráfico ICMP entrante desde cualquier origen.
    • Permitir enlace de tráfico TCP saliente para cualquier destino.
  • Una lista de seguridad para la subred de intercambio de tráfico, con las siguientes reglas:
    • Permitir enlace de tráfico TCP saliente para cualquier destino.
    • Permitir el tráfico ICMP entrante desde cualquier origen.
    • Permita el tráfico TCP entrante de cualquier origen al puerto 5666.
  • Lista de seguridad para la subred de gestión, con las siguientes reglas:
    • Permita el tráfico ICMP entrante desde la subred de acceso.
    • Permita el tráfico HTTP entrante de la subred de acceso al puerto 80.
    • Permitir enlace de tráfico TCP saliente para cualquier destino.
management/server_attachment
  • Tabla de rutas adjunta a la subred de gestión, con las siguientes reglas:
    • Direccionar el tráfico vinculado para Internet público a través del gateway NAT.
    • Direccionar tráfico enlazado para cada una de las VCN del inquilino a la instancia adecuada del gateway de direccionamiento.
  • Una tabla de rutas conectada a la subred de acceso con las siguientes reglas:
    • Direccionar el tráfico vinculado para Internet público a través de la puerta de enlace de Internet.
    • Direccionar tráfico enlazado para cada una de las VCN del inquilino a la instancia adecuada del gateway de direccionamiento.
management/servers Instancia informática de Oracle Linux asociada a la subred de gestión en el ISV VCN.

Puede utilizar el servidor de gestión para instalar y ejecutar una aplicación de supervisión de infraestructura, como Nagios Core.

peering/network
  • Grupo dinámico compuesto por las instancias informáticas que alojan las puertas de enlace de enrutamiento.
  • Política para permitir que el grupo dinámico definido en esta configuración utilice las VNIC y las direcciones privadas en el compartimento.
  • Dos VCN de intercambio con una subred en cada VCN.
  • Un gateway de intercambio de tráfico local (LPG) para cada VCN.
  • Una lista de seguridad para cada subred, con reglas que permiten todo el tráfico ICMP entrante y todo el tráfico TCP saliente.
  • Una tabla de rutas para cada subred, con reglas para enrutar el tráfico enlazado para cada cliente VCN mediante LPG del VCN de intercambio de tráfico adecuado.
peering/routing
  • Dos puertas de enlace de enrutamiento:
    • Un gateway es un par de instancias de cálculo, cada una en un dominio de fallos diferente, con el fabricante instalado en ellas para activar la alta disponibilidad. Cada una de las instancias de recursos informáticos tiene dos VNIC secundarias, con una dirección IP flotante conectada a la primera VNIC secundaria. Esta puerta de enlace está diseñada para demostrar la conmutación por error de HA para la puerta de enlace de enrutamiento.
    • El otro gateway es una única instancia informática.
  • Un grupo de seguridad de red con las siguientes reglas:
    • Permita todo el tráfico TCP dentro del grupo a los puertos 3121, 2224 y 21064.
    • Permitir todo el tráfico UDP del grupo al puerto 4505.
tenant/network Los siguientes recursos para cada inquilino:
  • Un VCN de inquilino.
  • Gateways de NAT e Internet para VCN inquilino.
  • Dos subredes, una pública y la otra privada.
  • LPG para VCN.
  • Tabla de rutas para la subred pública, con las siguientes reglas:
    • Direccionar el tráfico vinculado para Internet público a través de la puerta de enlace de Internet.
    • Tráfico de ruta enlazado para la subred de intercambio de tráfico mediante LPG.
    • Direccionar el tráfico vinculado para la subred de gestión a través de LPG.
  • Tabla de rutas para la subred privada, con las siguientes reglas:
    • Direccionar el tráfico vinculado para Internet público a través del gateway NAT.
    • Tráfico de ruta enlazado para la subred de intercambio de tráfico mediante LPG.
    • Direccionar el tráfico vinculado para la subred de gestión a través de LPG.
  • Lista de seguridad para la subred pública, con las siguientes reglas:
    • Permita el tráfico ICMP entrante desde cualquier destino.
    • Permitir tráfico TCP saliente a cualquier destino.
  • Una lista de seguridad para la subred privada, con las siguientes reglas:
    • Permita el tráfico ICMP entrante desde cualquier destino.
    • Permitir tráfico TCP saliente a cualquier destino.
    • Permitir el tráfico TCP entrante al puerto 5666.
tenant/servers Una instancia informática de Oracle Linux en cada uno de los compartimentos de inquilino.

Puede utilizar esta instancia para instalar y ejecutar un agente de supervisión de infraestructura. Por ejemplo, si instala Nagios Core en el servidor de gestión en el ISV VCN, puede instalar el agente Nagios en la instancia informática en cada compartimento de inquilino. El agente puede supervisar los servidores en el compartimento y enviar métricas al servidor de supervisión Nagios.

terraform.tfvars.sample Plantilla para el archivo de variables de Terraform.
terragrunt.hcl La configuración de Terragrunt.

Configuración de las variables de Terraform

Especifique los parámetros necesarios para que Terraform se conecte al arrendamiento de Oracle Cloud Infrastructure, las claves SSH para las instancias informáticas y la contraseña para el cluster de direccionamiento.

  1. Copie examples/full-deployment/terraform.tfvars.sample en examples/full-deployment/terraform.tfvars.
  2. Abra examples/full-deployment/terraform.tfvars en un editor de texto sin formato y defina valores para las variables de la siguiente forma:
    Variable Descripción
    tenancy_ocid OCID del arrendamiento.

    Puede encontrar el OCID de su arrendamiento en la consola web de Oracle Cloud Infrastructure. Seleccione Administración en el menú Servicios y, a continuación, haga clic en Detalles de arrendamiento.

    user_ocid OCID del usuario que desea que utilice Terraform para la autenticación con Oracle Cloud Infrastructure.

    Para buscar el OCID del usuario, seleccione Identidad en el menú Servicios y, a continuación, seleccione Usuarios. Localice su nombre de usuario en la lista y copie su OCID.

    fingerprint Huella de la clave de firma de API que ha cargado.
    private_key_path Ruta de acceso completa y nombre del archivo que contiene su clave de firma de API privada.
    Región Identificador de la región en la que desea crear los recursos.

    Por ejemplo, el ID de la región US East (Ashburn) es us-ashburn-1.

    Consulte Regiones y dominios de disponibilidad.

    compartment_ocid OCID del compartimento en el que desea crear los recursos.

    El compartimento que especifique será el compartimento principal para la topología.

    Para buscar el OCID de un compartimento, seleccione Identidad en el menú Servicios y, a continuación, seleccione Compartimentos. Localice el compartimento que necesita en la lista y copie su OCID.

    bastion_ssh_public_key_file Ruta de acceso completa y nombre del archivo que contiene la clave pública SSH para el servidor de base.
    bastion_ssh_private_key_file Ruta de acceso completa y nombre del archivo que contiene la clave privada SSH para el servidor de base.
    remote_ssh_public_key_file Ruta de acceso completa y nombre del archivo que contiene la clave pública de SSH para las instancias informáticas privadas en la topología.
    remote_ssh_private_key_file Ruta de acceso completa y nombre del archivo que contiene la clave privada SSH para las instancias informáticas privadas en la topología.

    Guarde y cierre terraform.tfvars.

    A continuación se muestra un ejemplo de un archivo terraform.tfvars terminado:

    tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa2 (truncated)"
    user_ocid = "ocid1.user.oc1..aaaaaaaag (truncated)"
    fingerprint = "56:f6:8e:bf: (truncated)"
    private_key_path = "/home/joe/.oci/oci_api_key.pem"
    region = "us-ashburn-1"
    
    compartment_ocid = "ocid1.compartment.oc1..aaaaaaaam (truncated)"
    
    bastion_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_bastion.pub"
    bastion_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_bastion"
    remote_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_remote.pub"
    remote_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_remote"
  3. Defina un secreto compartido para el cluster de direccionamiento en una variable de entorno.
    export TF_VAR_hacluster_password="somePassword"

    La contraseña debe contener al menos ocho caracteres. Debe incluir al menos una letra en mayúscula, una letra en minúscula, un número y un carácter especial (no alfanumérico).