Skip to main content

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

EstrategiaResultadoUso
endpointsEndpoint por hostname, aliases de la zona y hostPredeterminada
wildcardApex, *.zona y hostSolo si toda la zona usa el mismo origen
bothEndpoints mas wildcardNormalmente 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 CNAME incompatible con el A o AAAA deseado;
  • 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 1883 y 8883;
  • 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.