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" 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_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.
-
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-core
El paquete
ansible-core
está disponible en el repositorio 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 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-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, 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 --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 qué hosts gestionar. El valorall
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. -
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 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.