Sincronizacion DNS
El comando lee los endpoints de deployment/remote.env y calcula registros para la IP del host seleccionado.
1. Revisar el inventario
./infra server list --ordinal
El host remoto debe tener ansible_host=<IP publica> en deployment/ansible/inventory. Tambien puedes usar --target-ip.
2. Generar el plan
El modo predeterminado es dry-run y usa la estrategia endpoints.
REMOTE_STATUS_PAGE_HOST=sd2 \
./infra remote dns cloudflare sd2.aitha.es \
--zone aitha.es \
--strategy endpoints \
--include-status
Revisa toda la salida. Los nombres de otras zonas se muestran como omitidos. Por ejemplo, portal.agenciabene.com no puede escribirse dentro de aitha.es.
3. Aplicar y esperar propagacion
REMOTE_STATUS_PAGE_HOST=sd2 \
./infra remote dns cloudflare sd2.aitha.es \
--zone aitha.es \
--strategy endpoints \
--include-status \
--apply \
--wait
--apply falla si no existe CLOUDFLARE_API_TOKEN. Nunca informa exito sin haber escrito.
Estrategias
| Estrategia | Resultado | Uso |
|---|---|---|
endpoints | Endpoint por hostname, aliases de la zona y host | Predeterminada |
wildcard | Apex, *.zona y host | Solo si toda la zona usa el mismo origen |
both | Endpoints mas wildcard | Normalmente innecesaria |
Cambiar de wildcard a endpoints no elimina un wildcard anterior. Eliminalo manualmente despues de verificar todos los endpoints explicitos.
Conflictos
Sin --replace-existing, el comando se detiene ante:
- un
CNAMEincompatible con elAoAAAAdeseado; - multiples registros del mismo tipo para un nombre.
El sincronizador preserva MX, TXT, CAA y tipos coexistentes.
Usa --replace-existing solamente despues de revisar el conflicto en el dashboard:
REMOTE_STATUS_PAGE_HOST=sd2 \
./infra remote dns cloudflare sd2.aitha.es \
--zone aitha.es \
--strategy endpoints \
--include-status \
--replace-existing \
--apply \
--wait
La limpieza se limita al CNAME incompatible o a registros sobrantes del mismo tipo.
Un AAAA coexistente se preserva. Si esta obsoleto, remote domains lo reporta como MISMATCH; revisalo y eliminalo manualmente.
DNS-only
Los registros quedan con nube gris (proxied=false) porque:
- SSH usa
36987; - MQTT usa
1883y8883; - Let's Encrypt necesita alcanzar el origen;
- la verificacion compara DNS con la IP real.
El proxy naranja normal no transporta SSH ni MQTT. El sincronizador rechaza --proxied hasta disponer de politicas por endpoint.
Siguiente paso
Integra el dominio con el stack en Integracion con deploy.