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-labs
GitHub.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" EOF
-
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 defineansible_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.
-
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 mediante SSH al sistema ol-control-node.
ssh oracle@$CONTROL
-
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 repositoriool8_appstream
de Oracle Linux. -
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:
-
Crear un directorio de proyecto
mkdir ~/ol-automation
-
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
-
Introduzca el modo de inserción
vi
escribiendoi
. -
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 --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ónungrouped
es 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
vi
escribiendoi
. -
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
-
Guarde y cierre el archivo. Si utiliza
vi
, puede escribirESC
,:wq!
yENTER
. -
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:
-
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. -
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 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
vi
escribiendoi
. -
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 deol-host
para el nombre de host. -
Guarde y cierre el archivo. Si utiliza
vi
, puede hacerlo escribiendoESC
,:wq!
yENTER
. -
Vuelva a ejecutar el módulo
ping
utilizando el nombre de host en lugar deall
.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:
-
Cree un nuevo archivo de manual.
vi hello.yml
-
Introduzca el modo de inserción
vi
escribiendoi
. -
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íneahosts
que especifique los hosts que se van a gestionar. El valorall
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. -
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.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. -
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.
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-04
Copyright ©2021, Oracle and/or its affiliates.