Configuración del Entorno de Ejecución de Terraform

El entorno de ejecución de Terraform incluye el diseño de las carpetas y los archivos de configuración de Terraform necesarios para crear la topología de red de varias capas.

Acerca del Entorno de Ejecución de Terraform

El diseño del entorno de ejecución de Terraform está diseñado para modularidad y crecimiento futuro.

Los directorios y archivos que contienen la configuración de Terraform constituyen el entorno de ejecución. Cada subdirectorio representa un módulo Terraform. Juntos, los subdirectorios componen una biblioteca reutilizable de recursos.

La siguiente estructura de directorios representa el entorno de ejecución que se crea en esta solución.

A continuación se muestra la descripción de local_directory_structure.png
Descripción de la ilustración local_directory_structure.png

Toda la configuración se encuentra dentro de un directorio raíz que tiene el nombre que desee. Este directorio debe estar vacío al empezar.

Después de crear la configuración, el directorio raíz contiene los siguientes directorios y archivos:

  • El directorio compartments contiene los parámetros de configuración para los compartimentos.
  • El directorio iam contiene los parámetros de configuración de las políticas y los grupos.
  • El directorio vcn contiene los parámetros de configuración de la red virtual en la nube y las puertas de enlace.
  • Los siguientes archivos están en el directorio raíz:
    • datasources.tf determina el número de dominios de disponibilidad en la región y obtiene sus nombres.
    • provider.tf define los parámetros de los proveedores de Terraform que se van a utilizar.
    • root.tf define los módulos que se deben ejecutar Terraform.
    • terraform.tvars define los valores de las variables que se transfieren a Terraform.
    • variables.tf declara las variables que utilizan los módulos en la configuración.

Creación del módulo raíz

En el módulo raíz, se definen los parámetros necesarios para que Terraform se conecte a Oracle Cloud Infrastructure . También puede definir los datos y variables que utilizan los módulos en la configuración.

  1. En el equipo donde instaló Terraform, cree un directorio, denominado directorio raíz en el resto de esta solución.
  2. Cree los siguientes subdirectorios en el directorio raíz:
    • compartments
    • iam
    • vcn
  3. Cree un archivo de texto denominado variables.tf en el directorio raíz y pegue el siguiente código en el archivo.
    Este código declara las variables que utilizan los módulos en la configuración de Terraform. En el siguiente paso, especifique los valores de estas variables.
    variable "tenancy_ocid" {}
    variable "user_ocid" {}
    variable "fingerprint" {}
    variable "private_key_path" {}
    variable "private_key_password" {}
    variable "app_tag" {}
    variable "environment" {}
    variable "home_region" {}
    variable "region" {}
    variable "vcn_cidr" {
      default = "10.0.0.0/16"
    }
    
  4. Cree un archivo de texto denominado terraform.tfvars en el directorio raíz y pegue el siguiente código en el archivo.
    En este código, se definen los valores de las variables que se declararon en el paso anterior.
    # Parameters to authenticate with Oracle Cloud Infrastructure
    tenancy_ocid="EXAMPLE: ocid1.tenancy.oc1..aaaaaaaaf76usem7gyfrakr35anvky4tyowvdvbik7kbrcizlyjsgfxpdg2a"
    user_ocid="EXAMPLE: ocid1.user.oc1..aaaaaaaa5tds42w2zzbsdflkjwerkjghswdjfbvbts7imlb5yru2p10a"
    fingerprint="EXAMPLE: 9b:6a:ab:ab:32:0b:7f:d5:5b:6w:c0:fe:54:72:f1:pl"
    private_key_path="YOUR_HOME_DIRECTORY/.oci/oci_api_key.pem"
    
    # Leave empty if your private key does not have a password
    private_key_password=""
    
    # See https://docs.oracle.com/pls/topic/lookup?ctx=cloud&id=oci_general_regions
    home_region="EXAMPLE: us-ashburn-1"
    region="EXAMPLE: us-phoenix-1"
    
    # A short identifier for the application, used as a prefix for naming the compartments and other resources
    app_tag="myapp"
    
    # The environment that you're creating resources for: test, dev, prod, or staging
    environment="dev"
    
    # Base CIDR for the VCN
    vcn_cidr="10.0.0.0/16"
  5. Actualice los valores de las variables en terraform.tfvars como se describe en la siguiente tabla:
    Variable Descripción
    tenancy_ocid Identificador de Oracle Cloud (OCID) del arrendamiento.

    Para buscar el OCID de su arrendamiento, seleccione Administración en el menú Servicios y, a continuación, haga clic en Detalles de arrendamiento.

    user_ocid Identificador de Oracle Cloud (OCID) del usuario que desea que utilice Terraform para autenticarse con Oracle Cloud Infrastructure .

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

    huella Huella para la clave de firma de API que ha cargado.
    private_key_path Ruta de acceso al archivo que contiene la clave privada.
    private_key_password Contraseña de la clave privada. Si la clave no tiene una frase de contraseña, deje esta variable vacía.
    home_region Región inicial del arrendamiento. Los compartimentos, políticas y grupos se crean en la región inicial.

    Para obtener la región inicial, seleccione Administración en el menú Servicios, haga clic en Detalles de arrendamiento y copie el valor en el campo Región Inicial .

    Región Región en la que desea crear la red, el cálculo y otros recursos. Esta región puede ser la región inicial o cualquier otra región de Oracle Cloud Infrastructure .
    app_tag Prefijo que se utilizará en los nombres de los recursos, para indicar la aplicación a la que corresponde cada recurso. La mejor práctica es utilizar todos los caracteres en minúscula.
    entorno Prefijo que se utilizará en los nombres de los recursos, para indicar el entorno para cada recurso: desarrollo, prueba, ubicación temporal o producción. La mejor práctica es utilizar todos los caracteres en minúscula.
    vcn_cidr El rango de direcciones de la VCN, en formato CIDR. Planifique este rango con atención. No puede cambiarlo más tarde.
  6. Cree un archivo de texto denominado datasources.tf en el directorio raíz y pegue el siguiente código en el archivo.
    El código de datasources.tf determina el número de dominios de disponibilidad en la región y sus nombres. Este código utiliza la región que especifique en la variable region.
    data "oci_identity_availability_domains" "ad" {
      compartment_id = "${var.tenancy_ocid}"
    }
    
    data "template_file" "ad_names" {
      count    = "${length(data.oci_identity_availability_domains.ad.availability_domains)}"
      template = "${lookup(data.oci_identity_availability_domains.ad.availability_domains[count.index], "name")}"
    }
  7. Cree un archivo de texto denominado provider.tf en el directorio raíz y pegue el siguiente código en el archivo.
    El código de provider.tf define los parámetros para el proveedor que debe utilizar Terraform. Un proveedor convierte comandos de Terraform en llamadas de API específicas para un proveedor de servicios en la nube.
    provider "oci" {
      alias                = "home"
      region               = "${var.home_region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    
    provider "oci" {
      region               = "${var.region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    En este ejemplo, se definen dos proveedores. Ambos proveedores son para Oracle Cloud Infrastructure . El primer proveedor es para la región inicial, donde se crean los recursos de Oracle Cloud Infrastructure Identity and Access Management . El segundo proveedor es para la región en la que desea crear la red, el cálculo y otros recursos.
  8. Cree un archivo de texto denominado root.tf en el directorio raíz y pegue el siguiente código en el archivo.
    Este código especifica los módulos que debe ejecutar Terraform. El proveedor se especifica explícitamente para los módulos compartments y iam, ya que los compartimentos, grupos y políticas se deben crear en la región inicial.
    module "compartments" {
      source       = "./compartments"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    
    module "a_vcn" {
      source           = "./vcn"
      tenancy_ocid     = "${var.tenancy_ocid}"
      compartment_ocid = "${module.compartments.networks_id}"
      app_tag          = "${var.app_tag}"
      environment      = "${var.environment}"
      vcn_cidr         = "${var.vcn_cidr}"
    }
    
    module "iam" {
      source       = "./iam"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    Las variables app_tag y environment aplican un esquema de nomenclatura. No es necesario utilizar un esquema de nomenclatura, pero es una mejor práctica.