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"
    EOF
    
  6. Despliegue el entorno de prácticas.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
    

    El entorno de prácticas gratuito necesita la variable adicional local_python_interpreter, que define ansible_python_interpreter para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete de RPM para el SDK para Python de Oracle Cloud Infrastructure, ubicado en los módulos python3.6.

    La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU de Intel u Oracle Linux 9, agregue -e instance_shape="VM.Standard3.Flex" o -e os_version="9" al comando de despliegue.

    Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, la instalación de Oracle Linux está completa y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria durante la ejecución del laboratorio.

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 mediante SSH al sistema ol-control-node.

    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 ol8_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 pueden variar en función del tipo de sistema y del lugar en el que se despliega.

En el entorno de prácticas gratuito proporcionado, necesitamos la dirección IP del sistema ol-host, que localizamos mediante el separador Recursos de Luna Lab.

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. Desplácese al nuevo directorio y abra un nuevo archivo de inventario con el editor de texto que desee. Aquí, utilizaremos 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 con la siguiente dirección IP, como se muestra en el ejemplo.

    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 para ver el grupo agregado a la salida.

    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 los hosts que se van a gestionar. El valor all indica que el manual actuará en cada host incluido en el inventario. Como alternativa, puede indicar a un cuaderno de estrategias que solo ejecute tareas en una lista específica de hosts o grupos enumerando cada destino separado 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 completa 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.