Cómo añadir varios sitios en Cloudflare mediante automatización
Información general
Si deseas añadir simultáneamente varios sitios (más de 10) a Cloudflare, puedes hacerlo mediante la API de Cloudflare. Este enfoque puede ser útil si se cumplen las siguientes condiciones:
- Tienes varios dominios que se asignan a un único dominio canónico, p. ej., dominios de diferentes países (.com.au, .co.uk, etc.) que deseas proteger con Cloudflare.
- Eres una agencia o un consultor de TI y gestionas varios dominios en nombre de tus clientes (nota: nuestro Programa de socios podría interesarte).
- Estás trasladando un conjunto de sitios existentes a Cloudflare.
Con la API, podrás añadir varios sitios de forma rápida y eficiente, especialmente si ya conoces cómo cambiar tus servidores de nombres o añadir un registro DNS.
Requisitos previos
Para añadir varios sitios en Cloudflare mediante automatización, necesitarás:
- Una cuenta en Cloudflare ( regístrate / inicia sesión).
- Conocimientos básicos de la línea de comandos.
- curl instalada (de forma predeterminada en macOS y Linux).
- Tu clave de API de Cloudflare a mano.
- Una lista de dominios que desees añadir, cada uno en una línea separada (nueva línea separada), p. ej. “domains.txt”.
Cómo incorporar dominios mediante la API
Cloudflare dispone de una API con todas las funciones ( documentación) que te permiten automatizar la creación de nuevos dominios, además de configurar registros DNS, reglas de página y distintas configuraciones de seguridad. Utilizaremos esta API para automatizar la incorporación de varios dominios de una sola vez.
Abre tu aplicación Terminal (p. ej. Terminal o Terminal.app) y configura tu clave de API y correo electrónico:
export CF_API_EMAIL=you@example.comexport CF_API_KEY=abc123def456ghi789
A continuación, escribiremos un bucle de muestra “for” que utiliza el nombre de cada dominio.
for domain in $(cat domains.txt); do \ curl -X POST -H "X-Auth-Key: $CF_API_KEY" -H "X-Auth-Email: $CF_API_EMAIL" \ -H "Content-Type: application/json" \ "https://api.cloudflare.com/client/v4/zones" \ --data '{"account": {"id": "id_of_that_account"}, "name":"'$domain'","jump_start":true}'; done
La clave “jump_start” hará que Cloudflare intente detectar automáticamente los registros DNS comunes, p. ej. “www”, “mail”, “blog” y muchos otros, para que no tengas que configurarlos a mano (aun así, debes confirmar que hemos encontrado todos). id_of_that_account se encuentra en la aplicación Descripción general de Cloudflare, en ID de cuenta.
La API devolverá una respuesta, incluidos los servidores de nombres que deberás cambiar en el registrador (en el que has registrado el dominio).
{ "result": { "id": "abc123def456ghi789", "name": "ejemplo.com", "status": "pending", "paused": false, "type": "full", "development_mode": 0, "name_servers": [ "chad.ns.cloudflare.com", "lucy.ns.cloudflare.com" ], "original_name_servers": [ "ns-cloud-e1.googledomains.com", "ns-cloud-e2.googledomains.com", "ns-cloud-e3.googledomains.com", "ns-cloud-e4.googledomains.com" ], "original_registrar": null, "original_dnshost": null, "modified_on": "2018-02-12T01:42:13.827149Z", "created_on": "2018-02-12T01:42:13.827149Z", "meta": { "step": 4, "wildcard_proxiable": false, "custom_certificate_quota": 0, "page_rule_quota": 3, "phishing_detected": false, "multiple_railguns_allowed": false }, "owner": { "id": "abc123def456ghi789", "type": "user", "email": "you@example.com" }, "account": { "id": "abc123def456ghi789", "name": "you@example.com" }, "permissions": [ "#access:edit", "#access:read", "#analytics:read", "#app:edit", "#billing:edit", "#billing:read", "#cache_purge:edit", "#dns_records:edit", "#dns_records:read", "#lb:edit", "#lb:read", "#logs:read", "#member:edit", "#member:read", "#organization:edit", "#organization:read", "#ssl:edit", "#ssl:read", "#subscription:edit", "#subscription:read", "#waf:edit", "#waf:read", "#worker:edit", "#worker:read", "#zone:edit", "#zone:read", "#zone_settings:edit", "#zone_settings:read" ], "plan": { "id": "0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "name": "Free Website", "price": 0, "currency": "USD", "frequency": "", "is_subscribed": true, "can_subscribe": false, "legacy_id": "free", "legacy_discount": false, "externally_managed": false } }, "success": true, "errors": [], "messages": []}
Ten en cuenta la clave “name_servers” en la respuesta. Será el mismo par único para todos los sitios que añadas con tu cuenta, p. ej.:
"name_servers": [ "chad.ns.cloudflare.com", "lucy.ns.cloudflare.com" ]
Copia los valores (¡no los de arriba!) y actualiza los servidores de nombres en el registrador.
Cómo añadir dominios mediante flarectl (herramienta CLI de Cloudflare)
También puedes añadir dominios con flarectl, la CLI oficial de Cloudflare. Puedes descargar un paquete previamente generado para el sistema operativo (Windows, macOS/Darwin, Linux) y crear dominios con este.
Deberás configurar tus credenciales de API primero:
export CF_API_EMAIL=you@example.comexport CF_API_KEY=abc123def456ghi789
y, a continuación, ejecutar el siguiente comando en flarectl:
for domain in $(cat domains.txt); do flarectl zone create --zone=$domain --jumpstart=false; done
Ahora puedes obtener los mismos servidores de nombres para cada dominio mediante la “lista de zona flarectl”:
for domain in $(cat domains.txt); do flarectl zone info --zone=$domain; done
Si necesitas ayuda o asesoramiento, consulta la Comunidad Cloudflare.
Problemas frecuentes
En el caso de que se hayan mostrado errores en este proceso, es posible que no se haya registrado el dominio (o que se acabe de registrar), que sea un subdominio o que no sea válido. Los siguientes artículos incluyen los casos más comunes: