Note:
- Este tutorial está disponible en un entorno de prácticas gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
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:
- Instalación de Oracle Linux Automation Engine
- Crear un archivo de inventario
- Ejecutar un comando ad hoc
- Escribir y ejecutar un manual
Requisitos
-
Un mínimo de dos sistemas Oracle Linux con la siguiente configuración:
- un usuario no raíz con permisos
sudo - par de claves ssh para el usuario que no es root
- La capacidad de SSH de un host a otro mediante una conexión SSH sin contraseña
- un usuario no raíz con permisos
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.
-
Abra un terminal en el escritorio Luna.
-
Clone el proyecto
linux-virt-labsGitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git -
Cambie al directorio de trabajo.
cd linux-virt-labs/olam -
Instale las recopilaciones necesarias.
ansible-galaxy collection install -r requirements.yml -
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 -
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 -
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_interpreterpara 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_versiondefinida 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.
-
Defina una variable igual a la dirección IP del nodo de control.
export CONTROL="<ip_address_of_ol-control-node>" -
Abra un terminal y copie el par de claves SSH en el nodo de control.
scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/ -
Defina los permisos en la clave privada SSH.
ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa" -
Conéctese al sistema ol-control-node mediante SSH.
ssh oracle@$CONTROL -
Instale el paquete y las dependencias de Oracle Linux Automation Engine.
sudo dnf install -y ansible-coreEl paquete
ansible-coreestá disponible en el repositorio AppStream de Oracle Linux. -
Pruebe la instalación del paquete.
ansible --versionLa 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:
-
Crear un directorio de proyecto
mkdir ~/ol-automation -
Vaya al nuevo directorio y abra un nuevo archivo de inventario con el editor de texto que prefiera. Aquí usaremos
vi.cd ~/ol-automationvi inventory -
Introduzca el modo de inserción
viescribiendoi. -
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 -
Guarde y cierre el archivo. Si utiliza
vi, puede escribirESC,:wq!yENTER. -
Valide el archivo de inventario.
ansible-inventory -i inventory --listLa salida muestra la información de inventario.
Ejemplo de salida:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] }, "ungrouped": { "hosts": [ "130.61.100.96" ] } }La referencia
allhace referencia a todos los hosts del archivo de inventario, y la secciónungroupedes para cualquier host que no forme parte de un grupo mostrado. -
Edite el inventario y coloque el host dentro de un grupo denominado
development.vi inventory -
Introduzca el modo de inserción
viescribiendoi. -
Agregue el nombre del grupo entre corchetes, seguido de la dirección IP que se encuentra debajo.
Por ejemplo:
[development] 130.61.100.96 -
Guarde y cierre el archivo. Si utiliza
vi, puede escribirESC,:wq!yENTER. -
Vuelva a ejecutar el paso de validación y verifique que la salida contiene el grupo.
ansible-inventory -i inventory --listLa 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:
-
Ejecute el módulo
ping.ansible all -i inventory -m pingLa opción
allindica 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
-mespecifica el módulo que se va a ejecutar. -
Acepte la huella de clave de ECDSA escribiendo
yesen la petición de datos.Según su entorno,
pingpuede 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
oracleno existe en el host que intentamos gestionar. Corrija esto agregando un usuario remoto válido al inventario mediante la variableansible_user. En el archivo de inventario, proporcione al host una referencia de nombre de host y asigne la dirección IP a la variableansible_host. -
Agregue el usuario remoto al archivo de inventario.
vi inventory -
Introduzca el modo de inserción
viescribiendoi. -
Agregue las dos variables como se muestra en el ejemplo.
Por ejemplo:
[development] ol-host ansible_host=130.61.100.96 ansible_user=opcEl entorno de prácticas gratuito proporciona un sistema preconfigurado para probar la gestión remota que contiene un usuario denominado
opc.opces el usuario por defecto creado en una instancia de Oracle Linux en Oracle Cloud Infrastructure (OCI). Podemos utilizar un nombre de ejemplo deol-hostpara el nombre de host. -
Guarde y cierre el archivo. Si utiliza
vi, puede hacerlo escribiendoESC,:wq!yENTER. -
Vuelva a ejecutar el módulo
pingutilizando el nombre de host en lugar deall.ansible ol-host -i inventory -m pingEl 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:
-
Cree un nuevo archivo de manual.
vi hello.yml -
Introduzca el modo de inserción
viescribiendoi. -
Agregue el siguiente texto al archivo del libro de estrategias.
Por ejemplo:
--- - hosts: all tasks: - name: Print message debug: msg: Hello from Oracle LinuxUn manual siempre debe empezar por
---, seguido de una líneahostsque especifique qué hosts gestionar. El valorallindica 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
namehace que Oracle Linux Automation Engine muestre la salida en el terminal a medida que ejecuta el manual. -
Guarde y cierre el archivo. Si utiliza
vi, puede hacerlo escribiendoESC,:wq!yENTER. -
Ejecute el manual de hello.yml en el inventario.
ansible-playbook -i inventory hello.ymlEn lugar de utilizar la variable
ansible_useren 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 opcSi 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=0Como 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. -
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.
Enlaces relacionados
- Documentación de Oracle Linux Automation Manager
- Formación sobre Oracle Linux Automation Manager
- Oracle Linux Training Station
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.
Write a Playbook with Oracle Linux Automation Engine
F52969-05
Copyright ©2021, Oracle and/or its affiliates.