Note:

Escribe un cuaderno de estrategias con Oracle Linux Automation Engine

Introducción

Oracle Linux Automation Engine, un componente de Oracle Linux Automation Manager, es una herramienta de automatización para desplegar software, configurar sistemas y organizar tareas, como actualizaciones y actualizaciones, en forma de cuadernos de estrategias. Inicialmente, mediante el paquete ansible, Oracle Linux Automation Engine ahora proviene del paquete de software ansible-core de código abierto.

En el siguiente tutorial se presentan los manuales de escritura con Oracle Linux Automation Engine.

Objetivos

En este tutorial, aprenderá a:

Requisitos

Desplegar Oracle Linux

Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.

  1. Abra un terminal en el escritorio Luna.

  2. Clone el proyecto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Cambie al directorio de trabajo.

    cd linux-virt-labs/olam
    
  4. Instale las recopilaciones necesarias.

    ansible-galaxy collection install -r requirements.yml
    
  5. Actualice la configuración de la instancia de Oracle Linux.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "ol-control-node"
        type: "control"
      2:
        instance_name: "ol-host"
        type: "remote"
    olam_type: none
    EOF
    
  6. Cree un archivo de inventario.

    cat << EOF | tee hosts > /dev/null
    localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6
    EOF
    
  7. Despliegue el entorno de prácticas.

    ansible-playbook create_instance.yml -i hosts -e "@instances.yml"
    

    El entorno de prácticas gratuitas necesita la variable adicional ansible_python_interpreter para localhost porque instala el paquete RPM para el SDK para Python de Oracle Cloud Infrastructure. La ubicación para instalar este paquete se encuentra en los módulos de Python por defecto del sistema según la versión de Oracle Linux. El uso de una variable de inventario evita que las reproducciones se ejecuten en hosts que no sean localeshost.

    La unidad de despliegue por defecto utiliza la CPU de AMD. Puede cambiar la unidad de las instancias transfiriendo una nueva definición de variable de unidad en la línea de comandos.

    Por ejemplo: -e instance_shape="VM.Standard3.Flex"

    Del mismo modo, la versión por defecto de la imagen de Oracle Linux utiliza la variable os_version definida en el archivo `default_vars.yml. Puede modificar este valor transfiriendo la versión principal de Oracle Linux en la línea de comandos.

    Por ejemplo: -e os_version="9"

    Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación de Oracle Linux y las instancias están listas. Observe la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega.

Configurar nodo de control de Oracle Linux Automation Engine

El nodo de control es el sistema para ejecutar los cuadernos de estrategias de Oracle Linux Automation Engine. La ejecución de cuadernos de estrategias requiere la instalación del paquete de Oracle Linux Automation Engine.

  1. Defina una variable igual a la dirección IP del nodo de control.

    export CONTROL="<ip_address_of_ol-control-node>"
    
  2. Abra un terminal y copie el par de claves SSH en el nodo de control.

    scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
    
  3. Defina los permisos en la clave privada SSH.

    ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
    
  4. Conéctese al sistema ol-control-node mediante SSH.

    ssh oracle@$CONTROL
    
  5. Instale el paquete y las dependencias de Oracle Linux Automation Engine.

    sudo dnf install -y ansible-core
    

    El paquete ansible-core está disponible en el repositorio AppStream de Oracle Linux.

  6. Pruebe la instalación del paquete.

    ansible --version
    

    La salida mostrará la versión del comando, los detalles de configuración y la dependencia de versión de Python.

    Nota: Si la salida muestra ERROR: Ansible necesita que la codificación de configuración regional sea UTF-8; Detected None. (Ninguno detectado), esto indica un valor de configuración regional incorrecto para ansible. Corrija el problema definiendo estas dos variables de entorno:

    export LC_ALL="en_US.UTF-8"
    export LC_CTYPE="en_US.UTF-8"
    

Creación de un inventario

El archivo de inventario contiene detalles sobre los hosts que pertenecen a su infraestructura o que gestionará mediante Oracle Linux Automation Engine. Estos detalles indican cómo conectarse a estos hosts al ejecutar comandos ad hoc o manuales.

Recopilar información de nombre de host o dirección IP

Para crear un inventario para Oracle Linux Automation Engine, deberá determinar la dirección IP o el nombre de host que se puede resolver del sistema o sistemas que gestiona. Los pasos para recopilar esta información pueden variar según el tipo de sistema y la ubicación de la implementación.

En el entorno de prácticas gratuitas proporcionado, necesitamos la dirección IP del sistema ol-host, que el script de despliegue muestra como parte de su salida.

Crear archivo de inventario

Oracle Linux Automation Engine coloca el inventario por defecto en /etc/ansible/hosts. También permite un archivo de inventario de nivel de proyecto. Al utilizar un inventario de nivel de proyecto, deberá proporcionar la ruta al archivo de inventario mediante la opción -i al ejecutar comandos ad hoc o cuadernos de estrategias.

Desde un terminal en el nodo de control de Oracle Linux Automation Engine:

  1. Crear un directorio de proyecto

    mkdir ~/ol-automation
    
  2. Vaya al nuevo directorio y abra un nuevo archivo de inventario con el editor de texto que prefiera. Aquí usaremos vi.

    cd ~/ol-automation
    
    vi inventory
    
  3. Introduzca el modo de inserción vi escribiendo i.

  4. Agregue la dirección IP pública del sistema ol-host proporcionado. El archivo solo debe contener la dirección IP.

    Por ejemplo:

    130.61.100.96
    
  5. Guarde y cierre el archivo. Si utiliza vi, puede escribir ESC, :wq! y ENTER.

  6. Valide el archivo de inventario.

    ansible-inventory -i inventory --list
    

    La salida muestra la información de inventario.

    Ejemplo de salida:

    {
        "_meta": {
            "hostvars": {}
        },
        "all": {
            "children": [
                "ungrouped"
            ]
        },
        "ungrouped": {
            "hosts": [
                "130.61.100.96"
            ]
        }
    }
    

    La referencia all hace referencia a todos los hosts del archivo de inventario, y la sección ungrouped es para cualquier host que no forme parte de un grupo mostrado.

  7. Edite el inventario y coloque el host dentro de un grupo denominado development.

    vi inventory
    
  8. Introduzca el modo de inserción vi escribiendo i.

  9. Agregue el nombre del grupo entre corchetes, seguido de la dirección IP que se encuentra debajo.

    Por ejemplo:

    [development]
    130.61.100.96
    
  10. Guarde y cierre el archivo. Si utiliza vi, puede escribir ESC, :wq! y ENTER.

  11. Vuelva a ejecutar el paso de validación y verifique que la salida contiene el grupo.

    ansible-inventory -i inventory --list
    

    La salida muestra la información actualizada con el grupo.

    Ejemplo de salida:

    {
        "_meta": {
            "hostvars": {}
        },
        "all": {
            "children": [
                "development",
                "ungrouped"
            ]
        },
        "development": {
            "hosts": [
                "130.61.100.96"
            ]
        }
    }
    

Ejecutar comando ad hoc

Oracle Linux Automation Engine tiene varios módulos de ejecución única que no requieren escribir un manual. El más básico de ellos es el módulo ping, que intenta realizar una conexión SSH basada en los detalles proporcionados en el inventario.

Desde un terminal en el nodo de control de Oracle Linux Automation Engine:

  1. Ejecute el módulo ping.

    ansible all -i inventory -m ping
    

    La opción all indica al comando que se ejecute en todos los hosts enumerados en el archivo de inventario especificado por la opción -i. El comando también acepta grupos o nombres de host individuales.

    La opción -m especifica el módulo que se va a ejecutar.

  2. Acepte la huella de clave de ECDSA escribiendo yes en la petición de datos.

    Según su entorno, ping puede fallar con la siguiente salida:

    Ejemplo de salida:

    130.61.100.96 | UNREACHABLE! => {
        "changed": false,
        "msg": "Failed to connect to the host via ssh: Warning: Permanently added '130.61.100.96' (ECDSA) to the list of known hosts.\r\noracle@130.61.100.96: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).",
        "unreachable": true
    }
    

    Este fallo se produce porque la cuenta de usuario local oracle no existe en el host que intentamos gestionar. Corrija esto agregando un usuario remoto válido al inventario mediante la variable ansible_user. En el archivo de inventario, proporcione al host una referencia de nombre de host y asigne la dirección IP a la variable ansible_host.

  3. Agregue el usuario remoto al archivo de inventario.

    vi inventory
    
  4. Introduzca el modo de inserción vi escribiendo i.

  5. Agregue las dos variables como se muestra en el ejemplo.

    Por ejemplo:

    [development]
    ol-host ansible_host=130.61.100.96 ansible_user=opc
    

    El entorno de prácticas gratuito proporciona un sistema preconfigurado para probar la gestión remota que contiene un usuario denominado opc. opc es el usuario por defecto creado en una instancia de Oracle Linux en Oracle Cloud Infrastructure (OCI). Podemos utilizar un nombre de ejemplo de ol-host para el nombre de host.

  6. Guarde y cierre el archivo. Si utiliza vi, puede hacerlo escribiendo ESC, :wq! y ENTER.

  7. Vuelva a ejecutar el módulo ping utilizando el nombre de host en lugar de all.

    ansible ol-host -i inventory -m ping
    

    El comando se ejecuta correctamente con resultados similares a los mostrados.

    Ejemplo de salida:

    ol-host | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": false,
        "ping": "pong"
    }
    

Escribir un manual

Un manual es un conjunto de instrucciones, escritas en una sintaxis YAML adecuada, que se ejecutan en un único host o en un grupo de hosts. Estos archivos tienen la extensión predeterminada .yml o .yaml.

Nuestro primer manual se dirigirá a los hosts all desde el archivo de inventario creado. Este cuaderno de estrategias de ejemplo consta de una única tarea que imprime un mensaje de depuración.

Desde un terminal en el nodo de control de Oracle Linux Automation Engine:

  1. Cree un nuevo archivo de manual.

    vi hello.yml
    
  2. Introduzca el modo de inserción vi escribiendo i.

  3. Agregue el siguiente texto al archivo del libro de estrategias.

    Por ejemplo:

    ---
    - hosts: all
      tasks:
        - name: Print message
          debug:
            msg: Hello from Oracle Linux
    

    Un manual siempre debe empezar por ---, seguido de una línea hosts que especifique qué hosts gestionar. El valor all indica que ejecutará el manual en todos los hosts que aparecen en el inventario. También puede indicar a un cuaderno de estrategias que ejecute tareas solo en una lista específica de hosts o grupos enumerando cada destino, separados por dos puntos o comas. A continuación, la tarea utiliza el módulo de depuración para imprimir un mensaje.

    La línea name hace que Oracle Linux Automation Engine muestre la salida en el terminal a medida que ejecuta el manual.

  4. Guarde y cierre el archivo. Si utiliza vi, puede hacerlo escribiendo ESC, :wq! y ENTER.

  5. Ejecute el manual de hello.yml en el inventario.

    ansible-playbook -i inventory hello.yml
    

    En lugar de utilizar la variable ansible_user en el archivo de inventario, puede transferir el nombre de usuario remoto en la línea de comandos mediante la opción -u username.

    ansible-playbook -i inventory hello.yml -u opc
    

    Si todo funciona, el comando se completa correctamente e imprime el mensaje de depuración.

    Ejemplo de salida:

    
    PLAY [all] *********************************************************************
    
    TASK [Gathering Facts] *********************************************************
    [WARNING]: Platform linux on host ol-host is using the discovered Python
    interpreter at /usr/bin/python, but future installation of another Python
    interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen
    ce_appendices/interpreter_discovery.html for more information.
    ok: [ol-host]
    
    TASK [Print message] ***********************************************************
    ok: [ol-host] => {
        "msg": "Hello from Oracle Linux"
    }
    
    PLAY RECAP *********************************************************************
    ol-host                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
    

    Como el inventario solo define un único host, ol-host, el manual se ejecuta una vez. Antes de ejecutar la tarea que se muestra en el manual, Oracle Linux Automation Engine ejecuta una información de recopilación de tareas por defecto denominada facts. Esta tarea extrae información sobre el host remoto, que los cuadernos de estrategias pueden utilizar posteriormente para personalizar el comportamiento de las tareas mediante condicionales.

  6. Ejecute el siguiente comando ad hoc para imprimir una lista de facts para el host.

    ansible ol-host -i inventory -m setup
    

Pasos Siguientes

Este mensaje y la salida de facts confirman que ha ejecutado correctamente su primer manual con Oracle Linux Automation Engine.

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

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