Note:

Integración de Oracle Cloud Infrastructure Resource Manager con el proceso de automatización

Introducción

El servicio Oracle Cloud Infrastructure (OCI) Resource Manager permite automatizar el despliegue y las operaciones de todos los recursos de OCI. Mediante el modelo de infraestructura como código (IaC), el servicio se basa en Terraform, un estándar del sector de código abierto que permite a los ingenieros de DevOps desarrollar y desplegar su infraestructura en cualquier lugar.

Una configuración de Terraform codifica la infraestructura en archivos de configuración declarativos. El servicio OCI Resource Manager permite compartir y gestionar archivos de estado y configuración de infraestructura en varios equipos y plataformas.

A través de OCI Resource Manager es posible ejecutar scripts de Terraform en la consola de OCI. También es posible realizar una llamada REST o utilizar la interfaz de línea de comandos (CLI de OCI) de Oracle Cloud Infrastructure, ampliando así las posibilidades de integración con herramientas de automatización como OCI Devops, Jenkins, GitHub, etc.

arquitectura

En este tutorial, automatizaremos el despliegue de una instancia de Oracle Autonomous Database obteniendo la contraseña del administrador de la base de datos de forma segura a través de secretos de OCI Vault sin exponerla en los archivos, de modo que el usuario de ejecución de OCI Resource Manager tenga acceso adecuado para crear la base de datos y la contraseña almacenada.

Objetivos

Requisitos

Tarea 1: Creación de un secreto para Oracle Autonomous Database en OCI Vault

Crearemos una contraseña en OCI Vault para ilustrar cómo configurar un nuevo recurso en Terraform sin exponer datos confidenciales.

Los secretos son credenciales como contraseñas, certificados, claves SSH o tokens de autenticación que utiliza con los servicios de OCI. El almacenamiento de secretos en OCI Vault proporciona una mayor seguridad que la que puede conseguir almacenándolos en otro lugar, como en archivos de configuración o código. Puede recuperar secretos del servicio OCI Vault cuando los necesite para acceder a recursos u otros servicios.

Puede crear secretos utilizando la consola de OCI, la CLI de OCI o la API. El contenido del secreto para un secreto se importa al servicio desde un origen externo. El servicio OCI Vault almacena secretos en los almacenes.

Nota: Para esta tarea, necesitamos conectarnos como usuario administrador en la consola de OCI. Debe tener permiso para crear una contraseña en OCI Vault.

  1. Conéctese a la consola de OCI, haga clic en Identidad y seguridad y Almacén.

    img_10.png

  2. Seleccione el compartimento en el que desee almacenar los secretos y haga clic en Crear almacén.

    img_29.png

  3. Introduzca un nombre para el almacén, confirme el compartimento y haga clic en Create Vault.

    img_11.png

  4. Confirme que se ha creado el almacén y cree una clave. Haga clic en Master Encryption Keys y Create Key.

    img_12.png

  5. Confirme el compartimento e introduzca un nombre para la clave. Por ejemplo, introduzca autonomouskey como Nombre y haga clic en Crear clave.

    img_13.png

    Confirme que se ha creado la clave.

    img_14.png

  6. Haga clic en Secretos y Crear secreto.

    img_15.png

  7. Crearemos la contraseña de administrador autónomo. Introduzca la siguiente información y haga clic en Crear secreto.

    • Compartimento: Seleccionar compartimento.
    • Nombre: introduzca el nombre del primer secreto.
    • Seleccione Generación manual de secretos para incluir la contraseña.
    • Plantilla de tipo secreto: introduzca Plain-Text.
    • Contenido secreto: introduzca la contraseña.

    img_16.png

  8. Necesitará el OCID secreto. Para copiar el OCID, haga clic en Copiar.

    img_17.png

Tarea 2: Crear políticas para el usuario de OCI

En este tutorial, considere su nombre de usuario TestUser incluido en un grupo denominado TestGroup. Ahora, cree una política con el nombre TestPolicy.

Esta tarea es importante porque controla todos los privilegios necesarios para garantizar la seguridad de la automatización de Terraform.

Nota: Para esta tarea, necesitamos conectarnos con un usuario administrador en OCI.

  1. Vaya a la consola de OCI, haga clic en Identity & Security y en Policies.

    img_18.png

  2. Haga clic en Crear política.

    img_19.png

  3. En la sección Sentencias, introduzca las siguientes políticas.

    • Estas políticas otorgan permiso al grupo TestGroup creado anteriormente para gestionar una pila y trabajos en OCI Resource Manager.

      - Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
      - Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
      - Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
      
    • Esta política ofrece el derecho de crear una instancia de Oracle Autonomous Database en la integración de compartimentos.

      - Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
      
    • El grupo puede leer la contraseña almacenada en OCI Vault mediante scripts de Terraform.

      - Allow group 'Default'/'TestGroup' to use secret-family in tenancy
      
    • Esta política otorga el derecho de guardar los scripts de Terraform en un compartimento específico.

      - Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
      
    • Esta política permite a los usuarios de TestGroup editar código en el editor de códigos de OCI.

      - Allow group 'Default'/'TestGroup' to use cloud-shell in tenancy
      

    cloud_shell.png

Tarea 3: Creación de una pila a partir de una plantilla

Cree una pila para una instancia de Oracle Autonomous Database. Podemos utilizar una plantilla para ello. El primer paso es iniciar sesión como el usuario creado en la tarea 2.

  1. Vaya a la consola de OCI y haga clic en el menú de hamburguesa.

    img_1.png

  2. Haga clic en Servicios para desarrolladores y Pilas.

    img_2.png

  3. Seleccione el compartimento y haga clic en Crear pila.

    CleanShot 2024-04-15 a las 07.47.32.png

  4. En la página Información de pila, seleccione Plantilla y haga clic en Seleccionar plantilla para generar un script de Terraform para Oracle Autonomous Database.

    CleanShot 2024-04-15 a las 07.48.19.png

  5. En el separador Servicio, seleccione Autonomous Transaction Processing Database y haga clic en Seleccionar plantilla.

    CleanShot 2024-04-15 a las 07.49.57.png

  6. Puede generar los scripts de Terraform y almacenarlos en el cubo de OCI Object Storage. Seleccione Usar proveedores de Terraform personalizados, introduzca el compartimento y el nombre del cubo y guarde la pila.

    CleanShot 2024-04-15 a las 07.51.23.png

    Tu pila está guardada.

    CleanShot 2024-04-15 a las 07.54.01.png

  7. Esta plantilla no lee el secreto almacenado en OCI Vault. Para que Terraform lea el secreto, debemos cambiar el código.

    Haga clic en Editar y seleccione Editar configuración de Terraform en el editor de código.

    img_3.png

  8. Puede editar el código. El código por defecto genera una cadena aleatoria para la contraseña.

    • Archivo main.tf.

      CleanShot 2024-04-15 a las 08.05.40.png

      CleanShot 2024-04-15 a las 08.08.32.png

      Debe agregar un nuevo dato denominado oci_secrets_secretbundle y asignarlo a los siguientes atributos:

      • admin_password en las secciones autonomous_data_warehouse y autonomous_database.
      • password en la sección autonomous_database_wallet.
    • main.tf: sección autonomous_data_warehouse.

      data "oci_secrets_secretbundle" "bundle" {
          secret_id = var.secret_ocid
      }
      
      admin_password = base64decode(data.oci_secrets_secretbundle.bundle.secret_bundle_content.0.content)
      

      CleanShot 2024-04-15 a las 08.28.07.png

    • main.tf: sección autonomous_database.

      img_4.png

    • main.tf: sección autonomous_database_wallet.

      img_5.png

      CleanShot 2024-04-15 a las 08.30.15 substituir.png

    Agregue el siguiente código en el archivo variables.tf y sustituya el OCID del secreto generado en la tarea 1.

    variable "secret_ocid" {
        default = "ocid1.vaultsecret.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
    
    • Archivo variables.tf.

      CleanShot 2024-04-15 a las 08.30.52.png

    Nota: Guarde los archivos. Mueva el cursor del mouse sobre la pila (en el lado derecho del editor, en el título de Autonomous Transaction Processing....), haga clic con el botón derecho y guarde el proyecto. Si sale sin guardar, la ejecución asume que utilizará la cadena aleatoria en el script de código original.

Tarea 4: Prueba de los permisos

Puede probar las políticas y ver cómo tiene control de las instancias de OCI Resource Manager, OCI Vault y Oracle Autonomous Database en un compartimento específico.

  1. Conéctese a la consola de OCI con sus credenciales de usuario administrador y elimine todas las políticas para el grupo TestGroup en la política TestPolicy. Haga clic en Suprimir y confirme.

    img_7.png

  2. Ahora, inicie sesión con su usuario en el grupo TestGroup y no podrá ver la pila, por lo que no podrá ejecutarla.

    CleanShot 2024-04-15 a las 20.02.33.png

  3. Agregue las siguientes sentencias con el usuario administrador.

    Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
    Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
    Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    

    img_8.png

    Las siguientes sentencias otorgan al usuario permisos TestGroup para utilizar la pila de OCI Resource Manager.

    CleanShot 2024-04-15 a las 20.12.55.png

  4. Hemos eliminado el permiso para que su usuario cree una instancia de Oracle Autonomous Database y lea el secreto en OCI Vault. Así que puedes ejecutar tu pila pero sin éxito. Para probar, haga clic en aplicar en la página de detalles de la pila.

    CleanShot 2024-04-15 a las 20.16.39.png

    CleanShot 2024-04-15 a las 20.18.40.png

  5. Agregue permisos de Oracle Autonomous Database y OCI Vault en TestPolicy.

    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
    

    img_9.png

  6. Haga clic en aplicar en la página de detalles de la pila y podrá ver que tiene el control de todos los recursos sin exponer ninguna contraseña.

    CleanShot 2024-04-15 a las 21.34.57.png

Tarea 5: Llamada a la automatización de OCI Resource Manager con REST

Todos los recursos de OCI tienen una API de REST de OCI o un comando de la CLI de OCI para llamar a servicios como se ejecuta en la consola de OCI.

Para obtener más información sobre la API REST de OCI, consulte API REST de OCI. Puede ver la lista de comandos de la CLI de OCI aquí: Referencia de comandos de la CLI de Oracle Cloud Infrastructure.

Ahora, podemos elegir ejecutar la pila de OCI Resource Manager con una API de REST de OCI o un comando de la CLI de OCI. Para crear un trabajo, consulte CreateJob o puede utilizar el siguiente código de ejemplo curl-oci.zip con curl-oci.sh preparado con parámetros de OCI.

img_20.png

Debe crear la firma para sus solicitudes REST. Para obtener más información, consulte Tutorial de llamada de REST de Oracle Cloud Infrastructure (OCI) con curl.

  1. Cree un archivo denominado STACK-RUN.sh. Esta será su solicitud REST mediante curl-oci.sh (esta herramienta preparará la cadena de autorización con la información de OCI).

    img_1.png

  2. Cree un archivo denominado request.json con su ID de pila e ID de compartimento.

    img.png

  3. Abra el archivo curl-oci.sh y cambie los siguientes parámetros. Estos parámetros son los mismos que la instalación de la CLI de OCI.

    img_2.png

    Ahora, ejecute el script.

    img_3.png

    Puede ver los resultados de éxito.

    img_4.png

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.