Configurar ansible.cfg y los valores predeterminados del proyecto

AnsibleBeginner
Practicar Ahora

Introducción

Ansible busca la configuración siguiendo un orden predecible. Un archivo ansible.cfg a nivel de proyecto es fundamental porque permite que los comandos sean repetibles, independientemente de la sesión de shell desde la que se ejecuten.

En este laboratorio, creará un proyecto pequeño, redactará el archivo ansible.cfg, definirá los valores predeterminados del inventario, añadirá variables compartidas y ejecutará sus primeras comprobaciones de Ansible desde el directorio del proyecto.

Crear un proyecto e inventario mínimos

En este paso, creará los directorios y el archivo de inventario necesarios para la configuración de Ansible a nivel de proyecto. Este laboratorio comienza desde una máquina virtual limpia, por lo que solo creará los archivos necesarios aquí.

Cree la estructura del proyecto.

cd /home/labex/project
mkdir -p rhce-ansible/{inventory,group_vars,playbooks}

Este laboratorio mantiene el proyecto pequeño a propósito. inventory contendrá la lista de hosts gestionados, group_vars contendrá las variables que Ansible carga automáticamente y playbooks está reservado para archivos de automatización posteriores.

Acceda al directorio del proyecto.

cd rhce-ansible

Cree un inventario con un host gestionado local.

cat > inventory/hosts <<'EOF'
[managed]
node1 ansible_connection=local
EOF

El nombre de host node1 es un alias de inventario, no una máquina virtual independiente. El ajuste ansible_connection=local hace que Ansible ejecute los módulos en este mismo sistema RHEL, permitiéndole practicar la segmentación por grupos.

Escribir ansible.cfg para el proyecto

En este paso, creará el archivo ansible.cfg. La sección [defaults] controla el comportamiento común. Configurar inventory significa que no tendrá que escribir -i inventory/hosts en cada comando.

Antes de ejecutar los comandos en este paso, regrese al directorio del proyecto para que las rutas relativas hagan referencia al proyecto de Ansible.

cd /home/labex/project/rhce-ansible

Escriba el archivo de configuración.

cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
remote_user = labex
host_key_checking = False
retry_files_enabled = False
interpreter_python = auto_silent
stdout_callback = default
EOF

Cada ajuste elimina la necesidad de repetir una opción en la línea de comandos. inventory apunta al archivo de inventario estático, remote_user establece el usuario de inicio de sesión predeterminado, host_key_checking = False evita las solicitudes de clave de host SSH en entornos de laboratorio, y interpreter_python = auto_silent permite que Ansible seleccione Python sin mostrar advertencias de descubrimiento ruidosas.

Pregunte a Ansible qué archivo de configuración está utilizando.

ansible --version | sed -n '1,4p'

La salida debería incluir config file = /home/labex/project/rhce-ansible/ansible.cfg.

Este es un hábito importante: si Ansible está leyendo un archivo de configuración diferente, los comandos posteriores podrían utilizar un inventario, un callback o un comportamiento de conexión distintos a los esperados en el laboratorio.

Inspeccionar el inventario a través de los valores predeterminados del proyecto

En este paso, probará si ansible.cfg realmente apunta a su inventario. Debido a que la ruta del inventario está configurada, este comando no necesita la opción -i.

Antes de ejecutar los comandos en este paso, regrese al directorio del proyecto para que las rutas relativas hagan referencia al proyecto de Ansible.

cd /home/labex/project/rhce-ansible

Muestre el gráfico del inventario.

ansible-inventory --graph

El gráfico debería mostrar el grupo managed y el host node1.

La vista de gráfico es útil antes de ejecutar comandos porque muestra el inventario una vez que Ansible lo ha analizado. Si falta un grupo o un host aquí, el objetivo de un playbook tampoco lo encontrará.

Enumere las variables de host para node1.

ansible-inventory --host node1

Debería ver ansible_connection configurado como local.

La vista de host muestra las variables de host resueltas, no solo la línea de inventario sin procesar. Los laboratorios posteriores utilizan el mismo comando para solucionar problemas sobre si las variables provienen del inventario, de group_vars o de host_vars.

Añadir variables compartidas

En este paso, añadirá variables para todos los hosts gestionados. Los archivos en group_vars se cargan automáticamente cuando sus nombres coinciden con los grupos del inventario o con all.

Antes de ejecutar los comandos en este paso, regrese al directorio del proyecto para que las rutas relativas hagan referencia al proyecto de Ansible.

cd /home/labex/project/rhce-ansible

Cree group_vars/all.yml. YAML utiliza pares key: value. Mantenga un espacio después de cada dos puntos.

cat > group_vars/all.yml <<'EOF'
project_owner: labex
baseline_message: Managed by the RHCE Ansible prep project
EOF

El nombre de archivo all.yml tiene un significado especial: Ansible lo aplica a todos los hosts del inventario. Dado que es YAML, la sangría y el espacio después de cada dos puntos son necesarios para que el archivo sea válido.

Utilice el módulo debug para imprimir una variable del host gestionado.

ansible managed -m ansible.builtin.debug -a 'var=baseline_message'

La salida debería incluir el mensaje de group_vars/all.yml.

El comando ad hoc tiene tres partes: managed es el patrón de host, -m selecciona el módulo y -a pasa el argumento del módulo. Un resultado exitoso demuestra que el inventario configurado y la carga de variables funcionan correctamente.

Ejecutar una comprobación de conectividad

En este paso, ejecutará el módulo ping. Esto no es un ping ICMP; es un módulo de Ansible que comprueba si Ansible puede ejecutar Python en el host de destino.

Antes de ejecutar los comandos en este paso, regrese al directorio del proyecto para que las rutas relativas hagan referencia al proyecto de Ansible.

cd /home/labex/project/rhce-ansible

Ejecute la comprobación contra el grupo managed.

ansible managed -m ansible.builtin.ping

Un resultado exitoso incluye pong.

El módulo ping de Ansible es una prueba de ejecución de módulo, no un ping ICMP de red. Demuestra que Ansible puede alcanzar el host, iniciar Python y devolver un resultado de módulo.

Guarde un pequeño archivo de prueba desde un comando ad hoc. El módulo copy escribe contenido en una ruta de destino.

ansible managed -m ansible.builtin.copy -a 'content=ansible_cfg_ready dest=/home/labex/project/rhce-ansible/config-check.txt mode=0644'

Cuando este comando informa changed, significa que Ansible creó o actualizó el archivo. Si lo ejecuta de nuevo con el mismo contenido y modo, el resultado debería ser ok porque el estado deseado ya existe.

Resumen

Ha creado un archivo ansible.cfg a nivel de proyecto, ha confirmado que Ansible carga el inventario configurado, ha añadido variables compartidas y ha ejecutado comprobaciones de módulos ad hoc. Los laboratorios posteriores se basarán en esta configuración de proyecto repetible.