自動化機能を使ってCloudflareに複数のサイトを追加する
Cloudflare APIまたはCloudflareのCLIツールflarectlを使用して、複数のサイト(10以上)を一度にCloudflareに追加する方法を説明します。
本記事の内容
概要
複数のサイト(10以上)をCloudflareに一度に追加する必要がある場合は、Cloudflare APIを介して追加することができます。複数のサイトの追加は、次のような場合に役立ちます:
- 複数のドメインを単一の正規ドメインにマッピングする場合。例:Cloudflareを使用してさまざまな国のドメイン(.com.au、.co.ukなど)を保護したい。
- 代理店またはITコンサルタントであり、お客様に代わって複数のドメインを管理している場合(注:Cloudflareの パートナープログラムの利用をご検討ください)
- 複数の既存サイトをCloudflareに移動しようとしている
APIを使用することにより、複数のサイトを迅速に効率よく追加できます。特に、ネームサーバーの変更方法やDNSレコードの追加方法に精通している場合はお勧めします。
前提条件
自動化機能を使ってCloudflareに複数のサイトを追加するには、以下が必要になります:
- Cloudflareの既存アカウント( サインアップ / ログイン)
- コマンドラインに関する基本的な知識
- カールがインストールされている(デフォルトではMac OSとLinux上)
- Cloudflare APIキー
- (改行で区切られた)1行に1つずつ書かれた追加するドメインの一覧。例:“domains.txt”
APIを介してドメインを追加する
Cloudflareには、完全な機能を備えたAPI( ドキュメント)があり、新しいドメインの作成を自動化し、DNSレコード、Page Rule、およびCloudflareの多くのセキュリティ項目を設定できます。このAPIを使用して、複数のドメインを一度に自動追加します。
端末アプリケーション(例: TerminalまたはTerminal.app) を開いて、APIキーとメールを設定します:
export CF_API_EMAIL=you@example.comexport CF_API_KEY=abc123def456ghi789
次に、各ドメイン名を取得するシンプルなforループを書きます
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
「jump_start」キーを使用すると、手動で設定しなくても済むように、Cloudflareが一般的なDNSレコードのスキャンを自動的に試行します。例:「www」、「mail」、「blog」、およびそのほか多数(すべてを網羅しているかを確認してください)。 id_of_that_account は、 アカウントIDの下のCloudflare Overview アプリにあります。
APIは、Registrar(ドメインを登録した場所)で 変更する必要があるネームサーバーを含む、レスポンスを返します。
{ "result": { "id": "abc123def456ghi789", "name": "example.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": []}
「name_servers」キーがレスポンスにあることに注意してください。 これらは、アカウントに追加するすべてのサイトに対して同じ一意のペアになります。
"name_servers": [ "chad.ns.cloudflare.com","lucy.ns.cloudflare.com"]
Registrarで(上記の値ではなく)各自の値をコピーして、 ネームサーバーを更新します。
flarectlを介してドメインを追加する(CloudflareのCLIツール)
Cloudflareの公式CLIであるflarectlを使用してドメインを追加することもできます。オペレーティングシステム(Windows、macOS/Darwin、Linux)用の ビルド済みパッケージをダウンロードし、それを使用してドメインを作成することができます。
まず、API 認証情報を設定する必要があります。
export CF_API_EMAIL=you@example.comexport CF_API_KEY=abc123def456ghi789
次に、flarectl内で以下のコマンドを実行します:
for domain in $(cat domains.txt); do flarectl zone create --zone=$domain --jumpstart=false; done
その後で、「flarectlゾーンリスト」を使用して、各ドメインのネームサーバーを取得できます。
for domain in $(cat domains.txt); do flarectl zone info --zone=$domain; done
Cloudflareコミュニティ内でヘルプやヒントを探すことができます。
一般的な問題
このプロセスでエラーが返された場合、ドメインは登録されていない(登録されたばかりである)、サブドメインである、または無効である可能性があります。以下の記事では、最もよくあるケースについて説明します: