User Tools

Site Tools


procedures_ansible_migracion_con_rsync

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

procedures_ansible_migracion_con_rsync [2026/01/05 19:32] – created aperezprocedures_ansible_migracion_con_rsync [2026/01/19 05:58] (current) – removed aperez
Line 1: Line 1:
-====== Migración de proyecto Ansible entre servidores Debian con rsync ====== 
- 
-===== Contexto ===== 
-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: 
-  * Servidor origen con Ansible instalado bajo /root/ansible 
-  * Servidor destino con Ansible bajo /server/ansible 
-  * Acceso SSH disponible con un usuario no-root 
-  * Acceso a root local mediante su -, pero root por SSH deshabilitado (por seguridad) 
- 
-===== Infraestructura ===== 
-^ Rol ^ Host ^ 
-| Servidor origen | 10.28.64.28 | 
-| Servidor destino | 3av-iac | 
-| Sistema operativo | Debian | 
-| Usuario SSH | user | 
-| Proyecto | Ansible | 
- 
-===== Requisito de software ===== 
-El programa **rsync** debe estar instalado **en ambos servidores**: 
-  * servidor origen (envía datos) 
-  * servidor destino (recibe datos) 
- 
-Si rsync no está instalado en alguno de los dos, la transferencia fallará. 
- 
-===== Verificación de rsync ===== 
-Ejecutar en **ambos servidores**: 
- 
-<code bash> 
-rsync --version 
-</code> 
- 
-Salida esperada: 
-<code> 
-rsync  version 3.x.x 
-</code> 
- 
-===== Instalación de rsync (si no está presente) ===== 
- 
-==== En Debian / Ubuntu ==== 
-Ejecutar como root o con sudo: 
- 
-<code bash> 
-apt update 
-apt install rsync -y 
-</code> 
- 
-Verificar nuevamente: 
-<code bash> 
-rsync --version 
-</code> 
- 
-===== Problema encontrado ===== 
-Al intentar ejecutar rsync directamente como root vía SSH: 
- 
-<code bash> 
-rsync -avz root@10.28.64.28:/root/ansible/inventory/ /server/ansible/inventory/ 
-</code> 
- 
-Se obtiene: 
-  * Permission denied 
-  * Authentication failed 
-  * root login por SSH bloqueado 
- 
-===== Causa raíz ===== 
-  * root login por SSH está deshabilitado (PermitRootLogin no) 
-  * sudo requiere TTY para leer la contraseña 
-  * el uso de ssh -tt introduce salida adicional que rompe el protocolo rsync 
-  * rsync necesita una shell "clean" (sin banners, echoes, motd) 
- 
-===== Solución aplicada (recomendada) ===== 
-Ejecutar rsync como usuario normal vía SSH y elevar privilegios en el servidor remoto usando sudo, sin forzar TTY. 
- 
-===== Comando funcional validado ===== 
- 
-<code bash> 
-rsync -avz --progress \ 
-  --rsync-path="sudo rsync" \ 
-  user@10.28.64.28:/root/ansible/inventory/ \ 
-  /server/ansible/inventory/ 
-</code> 
- 
-Resultado: 
-  * Transferencia exitosa 
-  * Inventarios copiados correctamente 
-  * Sin errores de protocolo 
- 
-===== Archivos migrados ===== 
-Ejemplo de salida esperada: 
- 
-<code> 
-hosts_north 
-hosts_north_1 
-hosts_south 
-hosts_south_1 
-</code> 
- 
-===== Verificación post-migración ===== 
-En el servidor destino: 
- 
-<code bash> 
-ls -lah /server/ansible/inventory/ 
-</code> 
- 
-===== Migrar TODO el proyecto Ansible ===== 
-Para copiar el proyecto completo (inventory, playbooks, roles, backups, etc.): 
- 
-<code bash> 
-rsync -avz --progress \ 
-  --rsync-path="sudo rsync" \ 
-  user@10.28.64.28:/root/ansible/ \ 
-  /server/ansible/ 
-</code> 
- 
-===== Clonado exacto (modo espejo) ===== 
-ATENCIÓN: elimina en destino lo que no exista en origen. 
- 
-<code bash> 
-rsync -avz --progress --delete \ 
-  --rsync-path="sudo rsync" \ 
-  user@10.28.64.28:/root/ansible/ \ 
-  /server/ansible/ 
-</code> 
- 
-===== Errores comunes y explicación ===== 
- 
-==== sudo: a terminal is required ==== 
-Causa: 
-  * sudo espera una TTY para leer la contraseña 
- 
-Solución: 
-  * evitar ssh -tt 
-  * permitir NOPASSWD para rsync 
- 
-==== protocol version mismatch ==== 
-Causa: 
-  * salida adicional en la shell (banner, echo, motd, sudo prompt) 
-  * uso de ssh -tt rompe el protocolo rsync 
- 
-Solución: 
-  * usar shell no-interactiva 
-  * mantener entorno limpio 
- 
-===== Mejora recomendada (automatización) ===== 
-Permitir que el usuario ejecute rsync como root sin password. 
- 
-En el servidor origen: 
- 
-<code bash> 
-visudo 
-</code> 
- 
-Agregar al final: 
- 
-<code> 
-user ALL=(root) NOPASSWD: /usr/bin/rsync 
-</code> 
- 
-===== Buenas prácticas ===== 
-  * rsync debe existir en ambos extremos 
-  * No habilitar root por SSH salvo casos excepcionales 
-  * Usar sudo controlado por comando 
-  * Evitar banners en .bashrc para usuarios técnicos 
-  * Probar siempre con --dry-run antes de --delete 
- 
-===== Referencias ===== 
-  * man rsync 
-  * man sudo 
-  * man ssh 
-  * Debian Security Hardening Guide 
- 
-===== Estado ===== 
-✔ Procedimiento validado en producción   
-✔ rsync verificado en ambos servidores   
-✔ Inventarios y proyecto Ansible migrados correctamente   
-✔ Documento base para futuras migraciones 
  
procedures_ansible_migracion_con_rsync.1767641521.txt.gz · Last modified: by aperez

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki