Aprovisionar los recursos

Puede aprovisionar los recursos utilizando Terraform o Terragrunt. Si utiliza Terraform, debe aplicar las configuraciones en cada directorio, en una secuencia prescrita. Con Terragrunt, puede aprovisionar todos los recursos con un solo comando.

Acerca de los archivos de estado de Terraform

Terraform almacena información de estado para realizar un seguimiento de los recursos de infraestructura gestionada, asignar los recursos desplegados a la configuración, realizar un seguimiento de los metadatos y mejorar el rendimiento de despliegues de infraestructura grandes.

Por defecto, el archivo terraform.tfstate se almacena en el host local. Este comportamiento por defecto no es óptimo en entornos de TI en los que varios usuarios necesitan crear y destruir los recursos que se definen en una configuración determinada. Para controlar el despliegue y la gestión de recursos en un entorno de varios usuarios, almacene los archivos de estado de Terraform en Oracle Cloud Infrastructure Object Storage y comparta los archivos de estado y los archivos de bloqueo entre todos los usuarios. Consulte Uso del Almacén de Objetos para Archivos de Estado de Terraform.

Provisión de los recursos mediante Terragrunt

Puede utilizar Terragrunt para aprovisionar todos los recursos de la topología mediante un solo comando. Internamente, Terragrunt invoca los comandos de Terraform y gestiona todas las dependencias entre recursos definidas en la configuración.

  1. Vaya al directorio examples/full-deployment.
  2. Inicialice los módulos Terraform ejecutando el siguiente comando:
    make init
    El comando inicializa todos los módulos de Terraform de la configuración ejecutando terraform init en cada directorio.
  3. Aprovisione los recursos ejecutando el siguiente comando:
    terragrunt apply-all
    Terragrunt invoca el comando terraform apply para todos los módulos de Terraform de la configuración en una secuencia definida. Todos los recursos se despliegan.

Aprovisionamiento de los recursos mediante Terraform

Si decide provisionar los recursos mediante Terraform, debe aplicar la configuración de Terraform en cada directorio de forma individual en una secuencia prescrita.

  1. Copie examples/full-deployment/terraform.tfvars en cada uno de los siguientes subdirectorios de examples/full-deployment:
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    Vaya al directorio examples/full-deployment e introduzca el siguiente comando para copiar terraform.tfvars en todos los subdirectorios necesarios. Por motivos de legibilidad, el comando se muestra en varias líneas con una barra invertida (\) al final de cada línea. Copie todas las líneas, incluido el carácter de barra invertida y péguelo como un único comando.

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. Vaya al directorio examples/full-deployment/common/configuration.
  3. Ejecute los siguientes comandos:
    1. Inicialice la configuración:
      terraform init
    2. Revise los recursos definidos en la configuración:
      terraform plan
    3. Aplique la configuración:
      terraform apply
    La configuración del directorio common/configuration calcula 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. No se crea ningún recurso al aplicar esta configuración; los resultados del cálculo se utilizan cuando se crean las VCN y otros recursos de red.
  4. Ejecute los comandos terraform init, terraform plan y terraform apply en los siguientes directorios bajo examples/full-deployment, en el orden de ejecución indicado:
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    Después de ejecutar terraform apply en todos los directorios de configuración en el orden indicado, la topología se despliega completamente.

Modificar topología

Para modificar la topología, debe actualizar las definiciones de recursos en las configuraciones de Terraform adecuadas y, a continuación, aplicar la configuración revisada. La identificación de las definiciones de recursos que se deben modificar requiere una comprensión completa del código de ejemplo, específicamente los módulos de Terraform a los que se hace referencia en cada directorio y las dependencias entre módulos.

Las instrucciones para modificar la topología están fuera del ámbito de esta solución.

Eliminar todos los recursos

Puede eliminar todos los recursos desplegados fácilmente mediante Terraform o Terragrunt.

  1. Vaya al directorio examples/full-deployment.
  2. Realice una de las siguientes acciones:
    • Si tiene Terragrunt instalado, ejecute el siguiente comando:

      terragrunt destroy-all

      Terragrunt invoca el comando terraform destroy para los recursos de la configuración en una secuencia definida.

      Si intenta utilizar terragrunt destroy-all para limpiar un despliegue parcial o con fallos, se puede producir el siguiente error:

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      Si se produce este error, elimine los recursos ejecutando terraform destroy en cada directorio de configuración, como se describe a continuación.

    • Para eliminar los recursos con la CLI de Terraform, ejecute terraform destroy en cada directorio de configuración debajo de examples/full-deployment, en el siguiente orden.

      Nota:

      Espere a que el comando termine de ejecutarse en cada directorio antes de continuar con el siguiente directorio.
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration