Aprovisionar, configurar y eliminar recursos

Utilice Terraform para desplegar, cambiar y eliminar sus recursos de la nube de forma eficaz.

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.

Crear los recursos

Después de establecer las variables en el archivo terraform.tfvars, use la CLI de Terraform para desplegar los recursos definidos en la configuración de Terraform.

Antes de comenzar, asegúrese de que su máquina local tenga acceso a Internet. Si la máquina local está detrás de un firewall, utilice un proxy adecuado para permitir a Terraform alcanzar Internet.
  1. En la computadora en la que ha instalado Terraform, vaya al directorio que contiene el archivo terraform.tfvars.
  2. Inicialice Terraform ejecutando el siguiente comando:
    terraform init
    El comando descarga el complemento de proveedor oci y configura el directorio para que lo utilice Terraform.
  3. Verifique que la sintaxis de la configuración no tenga errores:
    terraform validate
  4. Si existe un error de sintaxis, corrija el error y repita el paso anterior.
    Para depurar problemas, puede configurar el registro:
    • Defina el nivel de log mediante la variable de entorno TF_LOG. Los niveles de registro soportados son TRACE, DEBUG, INFO, WARN o ERROR. El nivel TRACE es el más detallado.
    • Establezca la ruta del archivo de registro mediante la variable de entorno TF_LOG_PATH.
  5. Revise los recursos definidos en la configuración.
    terraform plan
    La salida muestra los detalles de todas las acciones que se realizan al aplicar esta configuración y un resumen, como se muestra en el siguiente ejemplo.
    Plan: 8 to add, 0 to change, 0 to destroy.

    Nota:

    El número 8 del mensaje es un ejemplo. El número real depende de la configuración definida en la configuración de Terraform.
  6. Si desea realizar algún cambio, edite la configuración, valide y revise el plan revisado.
  7. Cree los recursos:
    terraform apply
  8. En la petición de datos Do you want to perform these actions?, introduzca yes
    Como Terraform crea cada recurso, muestra el estado de la operación.

    Cuando se crean todos los recursos, se muestra el mensaje Apply complete, junto con el número de recursos agregados, cambiados y destruidos, como se muestra en el siguiente ejemplo.

Apply complete! Resources: 33 added, 0 changed, 0 destroyed.

Outputs:

admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101
  • La salida kubeconfig muestra el comando que puede utilizar para definir la variable de entorno KUBECONFIG en el host local. Ejecute este comando si desea utilizar la CLI kubectl del host local para gestionar el cluster de Kubernetes. El comando establece KUBECONFIG en el archivo generated/kubeconfig, que Terraform crea al aplicar la configuración.
  • La salida ssh_to_admin muestra el comando ssh que puede utilizar para conectarse al host de administración.
  • La salida ssh_to_bastion muestra el comando ssh que puede utilizar para conectarse al host de base.

Nota:

Puede ver esta salida de Terraform en cualquier momento ejecutando el comando terraform output
La topología de Kubernetes en Oracle Cloud está lista. Ahora puede desplegar aplicaciones contenedorizadas.

Permitir al host de administración gestionar recursos

Para permitir que el host de administración gestione recursos en el compartimento, puede designarlo como principal de instancia. Use esta función si tiene previsto ejecutar comandos de la CLI o realizar llamadas de la API desde el host de administración para gestionar recursos en la topología.

Una instancia informática designada como principal de instancia obtiene su propia identidad única. Se puede autenticar mediante certificados creados y asignados automáticamente a la instancia. Los certificados se rotan periódicamente. No es necesario distribuir las credenciales al host de administración ni rotarlas.

Nota:

Cualquier usuario que pueda conectarse a una instancia informática con SSH hereda los privilegios instance-principal otorgados a la instancia. Considere esto cuando decida designar el host de administración como principal de instancia. Puede desactivar o activar esta función en cualquier momento sin que afecte al host de administración.
  • Para designar el host de administración como principal de instancia, defina lo siguiente en terraform.tfvars y, a continuación, ejecute terraform apply.

    admin_instance_principal = true

    El host de administración se convierte en miembro de un grupo dinámico, y se crea una sentencia de política para permitir que el grupo dinámico gestione todos los recursos del compartimento.

  • Para retirar los privilegios de principal de instancia del host de administración, defina lo siguiente en terraform.tfvars y, a continuación, ejecute terraform apply.

    admin_instance_principal = false

Activación o desactivación de notificaciones para el host de base

Puede utilizar el servicio de notificación de Oracle Cloud Infrastructure para recibir mensajes de estado del host de base cuando se aplican actualizaciones o cuando Oracle Ksplice detecta un intento de explotación conocido.

Nota:

El código Terraform de esta solución solo configura las notificaciones cuando usa la imagen por defecto de Oracle Autonomous Linux.
  • Para activar las notificaciones para el host de base, defina las siguientes variables en terraform.tfvars:

    bastion_notification_enabled = true
    bastion_notification_endpoint = "email_address"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "topic_name"

    A continuación se muestra un ejemplo de terraform.tfvars con las variables relacionadas con notificaciones definidas.

    bastion_notification_enabled = true
    bastion_notification_endpoint = "joe@example.com"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "bastion"
  • Si ya se ha creado el host bastion y desea activar las notificaciones ahora, defina estas variables y vuelva a ejecutar terraform apply.
    • Las políticas necesarias se definen para permitir que el host de base publique notificaciones.
    • Se crea un tema de notificación y la dirección de correo electrónico especificada se suscribe al tema.
    • El host de base está configurado para enviar notificaciones.

    Una vez creados los recursos, recibirá un correo electrónico donde se le solicitará que confirme la suscripción.

  • Para desactivar las notificaciones, defina lo siguiente en terraform.tfvars y ejecute terraform apply.

    bastion_notification_enabled = false
    admin_notification_enabled = false

Eliminar todos los recursos

  1. En la computadora en la que ha instalado Terraform, vaya al directorio que contiene el archivo terraform.tfvars.
  2. Introduzca el siguiente comando:
    terraform destroy
    Terraform muestra los detalles de los recursos que se destruirán, como se muestra en este ejemplo:
    Plan: 0 to add, 0 to change, 12 to destroy.
  3. En la petición de datos Do you really want to destroy all resources?, introduzca yes
    Como Terraform elimina cada recurso, muestra el estado de la operación.
    Una vez que se eliminan todos los recursos, se muestra el mensaje Destroy complete, junto con el número de recursos destruidos, como se muestra en el siguiente ejemplo:
    Destroy complete! Resources: 12 destroyed.