Introducción
El acceso a nodos gestionados es la base de la automatización con Ansible. En entornos reales, Ansible suele conectarse mediante SSH y utiliza la escalada de privilegios para realizar tareas administrativas.
En este laboratorio, la configuración crea un usuario gestionado temporal llamado rhce_node. Generarás una clave SSH, la autorizarás para dicho usuario, configurarás el acceso al inventario y verificarás tanto la ejecución normal mediante SSH como el acceso mediante become.
Crear el proyecto de práctica de SSH
En este paso, crearás los directorios del proyecto y los valores predeterminados de Ansible para el acceso basado en SSH. La cuenta gestionada ya existe, pero aún no confía en tu clave.
Crea el proyecto y accede a él.
cd /home/labex/project
mkdir -p rhce-ansible/{inventory,keys,playbooks}
cd rhce-ansible
Crea el archivo ansible.cfg.
cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
host_key_checking = False
retry_files_enabled = False
interpreter_python = auto_silent
EOF
Este proyecto utiliza una conexión SSH real a 127.0.0.1 más adelante en el laboratorio. El directorio keys mantiene el par de claves del laboratorio separado de tus archivos habituales en ~/.ssh, y host_key_checking = False evita que aparezca una solicitud interactiva durante este ejercicio local controlado.
Generar un par de claves SSH
En este paso, crearás un par de claves SSH Ed25519. La clave privada permanecerá en keys/rhce_ed25519; la clave pública es segura para instalarla en una cuenta gestionada. La opción -N '' crea una clave sin frase de contraseña para la automatización del laboratorio.
Antes de ejecutar los comandos en este paso, regresa al directorio del proyecto de Ansible. Esto mantiene los comandos estables incluso cuando LabEx ejecuta cada paso por separado.
cd /home/labex/project/rhce-ansible
Genera el par de claves.
ssh-keygen -t ed25519 -f keys/rhce_ed25519 -N '' -C rhce-ansible-lab
Esto crea dos archivos. keys/rhce_ed25519 es la clave privada y debe permanecer privada; keys/rhce_ed25519.pub es la clave pública que puede instalarse en la cuenta del usuario gestionado.
Inspecciona la clave pública.
cat keys/rhce_ed25519.pub
La línea de la clave pública debe comenzar con ssh-ed25519 y terminar con el comentario rhce-ansible-lab. Copiarás esta clave pública, no la privada, en authorized_keys.
Autorizar la clave para el usuario gestionado
En este paso, instalarás la clave pública para el usuario gestionado temporal. No estás cambiando el acceso SSH de LabEx para el usuario labex; solo estás preparando a rhce_node para este laboratorio.
Antes de ejecutar los comandos en este paso, regresa al directorio del proyecto de Ansible.
cd /home/labex/project/rhce-ansible
Crea el directorio .ssh del usuario gestionado.
sudo mkdir -p /home/rhce_node/.ssh
SSH busca las claves públicas de confianza en el directorio .ssh del usuario. Necesitas sudo aquí porque el directorio pertenece al directorio personal de otro usuario.
Instala tu clave pública como authorized_keys.
sudo cp keys/rhce_ed25519.pub /home/rhce_node/.ssh/authorized_keys
Corrige la propiedad y los permisos. SSH rechaza las claves cuando los directorios o archivos tienen permisos demasiado abiertos.
sudo chown -R rhce_node:rhce_node /home/rhce_node/.ssh
sudo chmod 700 /home/rhce_node/.ssh
sudo chmod 600 /home/rhce_node/.ssh/authorized_keys
Los valores de los permisos son deliberados: 700 permite que solo rhce_node acceda al directorio .ssh, y 600 permite que solo ese usuario lea o escriba en authorized_keys. Estas comprobaciones evitan la exposición accidental de las credenciales de inicio de sesión.
Configurar el inventario para el acceso SSH
En este paso, crearás una entrada en el inventario que le indique a Ansible cómo conectarse al usuario gestionado mediante SSH en localhost.
Antes de ejecutar los comandos en este paso, regresa al directorio del proyecto de Ansible.
cd /home/labex/project/rhce-ansible
Escribe el inventario.
cat > inventory/hosts <<'EOF'
[managed]
node1 ansible_host=127.0.0.1 ansible_user=rhce_node ansible_ssh_private_key_file=/home/labex/project/rhce-ansible/keys/rhce_ed25519
EOF
Esta línea del inventario separa el nombre de Ansible de los detalles de conexión. node1 es el alias del inventario, ansible_host es la dirección a la que conectarse, ansible_user es la cuenta remota y ansible_ssh_private_key_file apunta a la clave privada.
Prueba la conexión SSH directamente antes de usar Ansible.
ssh -i keys/rhce_ed25519 -o StrictHostKeyChecking=no rhce_node@127.0.0.1 'whoami'
El comando debería imprimir rhce_node.
Probar SSH directamente ayuda a reducir el alcance del problema si Ansible falla más adelante. Si la conexión SSH directa no funciona, corrige la clave, la propiedad, los permisos o los valores de conexión del inventario antes de intentar solucionar problemas con los módulos de Ansible.
Validar el ping de Ansible y el uso de become
En este paso, probarás la conectividad de Ansible y la escalada de privilegios. La opción -b significa become, que le pide a Ansible que ejecute el módulo con privilegios elevados.
Antes de ejecutar los comandos en este paso, regresa al directorio del proyecto de Ansible.
cd /home/labex/project/rhce-ansible
Ejecuta el módulo ping de Ansible a través de SSH.
ansible managed -m ansible.builtin.ping
Esta vez, el módulo ping no utiliza un atajo de conexión local. Ansible debería conectarse como rhce_node, transferir un pequeño módulo, ejecutarlo con Python y devolver pong.
Ejecuta un comando con escalada de privilegios. El comando id -u imprime 0 cuando se ejecuta como root.
ansible managed -b -m ansible.builtin.command -a 'id -u'
El flag -b habilita become para este comando. Un resultado que contenga 0 demuestra que el usuario gestionado puede escalar privilegios a través de la regla de sudoers creada para el laboratorio.
Escribe un archivo de prueba propiedad de root usando el become de Ansible.
ansible managed -b -m ansible.builtin.copy -a 'content=become_ready dest=/etc/rhce-ansible-become.txt mode=0644'
Escribir en /etc requiere privilegios administrativos, por lo que este comando final demuestra algo más que la conectividad. Confirma que Ansible puede conectarse mediante SSH y realizar cambios privilegiados en el sistema cuando se le solicita.
Resumen
Has generado un par de claves SSH, lo has autorizado para un usuario gestionado temporal, has configurado el acceso al inventario basado en SSH y has validado la escalada de privilegios con become de Ansible.



