Despliegue del Orquestador en Fedora 43
Este procedimiento describe la implementación práctica del Estándar de Arquitectura de Nodo de Control sobre un sistema operativo Fedora 43, incorporando las mejores prácticas para la gestión de infraestructuras híbridas (nodos modernos y legados).
1. Instalación Base
En Fedora 43, el gestor de paquetes por defecto es DNF5. Podemos optar por una instalación minimalista (ansible-core) o la suite completa con colecciones comunitarias incluidas.
- Ansible Core (Recomendado para CI/CD)
- Ansible Full (Recomendado para SysAdmins)
Instala solo el motor de ejecución básico. Ideal para entornos controlados donde las dependencias se gestionan por proyecto.
sudo dnf update -y
sudo dnf install -y ansible-core openssh-clients
Instala el motor y un set masivo de colecciones soportadas por la comunidad (incluye callbacks avanzados como yaml).
sudo dnf update -y
sudo dnf install -y ansible openssh-clients
2. Configuración de la Salida y Optimización
Para mantener la legibilidad de las ejecuciones y evitar fallos de interpretación de datos en infraestructuras mixtas, configure el archivo ansible.cfg en la raíz de su proyecto:
[defaults]
# Configuración de salida limpia en formato YAML
stdout_callback = default
interpreter_python = auto_silent
host_key_checking = False
[callback_default]
result_format = yaml
[ssh_connection]
# CRÍTICO: Evita que scripts interactivos de login (.bashrc) ensucien el retorno JSON
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o LogLevel=ERROR
3. Gestión de Entornos Híbridos (Legados)
Uno de los mayores desafíos al usar Fedora 43 (con Python 3.12+) como nodo de control es la gestión de sistemas operativos antiguos como RHEL/CentOS 7 u 8 (que dependen de Python 3.6 o 3.9).
Para evitar errores de sintaxis (SyntaxError: future feature annotations is not defined) o fallos en el módulo dnf, siga estas directrices en su inventario:
[nodos_modernos]
srv-prod-01 ansible_host=10.0.0.10
# Para nodos Legacy que no soportan la sintaxis nativa de Ansible moderno en Python 3.6
[nodos_legacy]
srv-old-01 ansible_host=10.0.0.20 ansible_python_interpreter=/usr/bin/python3.9
:::warning Bypass para DNF en Sistemas EOL
Si gestiona sistemas RHEL/CentOS 8 con Python 3.9, el módulo nativo dnf de Ansible fallará al no encontrar las librerías de sistema. En estos casos se estandariza el uso del módulo shell apuntando al binario nativo:
- name: Instalar paquetes en nodo legado (Bypass)
shell: "dnf install -y nginx"
become: yes
:::
4. Resolución de Problemas Frecuentes
Error: Module invocation had junk after the JSON data
- Causa: El nodo remoto tiene un prompt de colores o un mensaje de MOTD que escribe en la sesión SSH antes de que Ansible ejecute el módulo.
- Solución: Asegúrese de tener activado
pipelining = Trueen la sección[ssh_connection]de suansible.cfg.
Error: Invalid callback for stdout specified: yaml
- Causa: Está utilizando
ansible-corey el pluginyamlno está instalado en las colecciones del sistema. - Solución: Cambie
stdout_callback = defaulty utilice la sección[callback_default]conresult_format = yamlcomo se describe en la Sección 2.
5. Validación de Conectividad
Antes de operar, verifique que la identidad SSH esté configurada según el estándar definido en la sección de seguridad de la arquitectura.
ansible all -m ping
Documentación relacionada: