Este procedimiento documenta la migración de un proyecto Ansible desde un servidor existente hacia un servidor nuevo en Debian, manteniendo integridad de inventarios, playbooks y estructura del proyecto.
Escenario típico:
| Rol | Host |
|---|---|
| Servidor origen | 10.28.64.28 |
| Servidor destino | 3av-iac |
| Sistema operativo | Debian |
| Usuario SSH | user |
| Proyecto | Ansible |
El programa rsync debe estar instalado en ambos servidores:
Si rsync no está instalado en alguno de los dos, la transferencia fallará.
Ejecutar en ambos servidores:
rsync --version
Salida esperada:
rsync version 3.x.x
Ejecutar como root o con sudo:
apt update apt install rsync -y
Verificar nuevamente:
rsync --version
Al intentar ejecutar rsync directamente como root vía SSH:
rsync -avz root@10.28.64.28:/root/ansible/inventory/ /server/ansible/inventory/
Se obtiene:
Ejecutar rsync como usuario normal vía SSH y elevar privilegios en el servidor remoto usando sudo, sin forzar TTY.
rsync -avz --progress \ --rsync-path="sudo rsync" \ user@10.28.64.28:/root/ansible/inventory/ \ /server/ansible/inventory/
Resultado:
Ejemplo de salida esperada:
hosts_north hosts_north_1 hosts_south hosts_south_1
En el servidor destino:
ls -lah /server/ansible/inventory/
Para copiar el proyecto completo (inventory, playbooks, roles, backups, etc.):
rsync -avz --progress \ --rsync-path="sudo rsync" \ user@10.28.64.28:/root/ansible/ \ /server/ansible/
ATENCIÓN: elimina en destino lo que no exista en origen.
rsync -avz --progress --delete \ --rsync-path="sudo rsync" \ user@10.28.64.28:/root/ansible/ \ /server/ansible/
Causa:
Solución:
Causa:
Solución:
Permitir que el usuario ejecute rsync como root sin password.
En el servidor origen:
visudo
Agregar al final:
user ALL=(root) NOPASSWD: /usr/bin/rsync
✔ Procedimiento validado en producción ✔ rsync verificado en ambos servidores ✔ Inventarios y proyecto Ansible migrados correctamente ✔ Documento base para futuras migraciones