Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

自動化で複数サイトを追加する

最終更新 Markdown で表示Agent セットアップ

Cloudflare API を使うと、複数サイトを一度に効率よく Cloudflare へ追加できます。

複数サイトの追加が役立つのは、次のような場合です。

  • 複数ドメインが 1 つの正規ドメインに対応している(国別ドメイン(.com.au.co.uk など)を Cloudflare で保護したい場合によくあります)。
  • パートナー、代理店、IT コンサルティングとして、顧客に代わって複数ドメインを管理している。
  • 既存のサイト群を Cloudflare へ移行している。

API を使うと、複数サイトをすばやく効率よく追加できます。ネームサーバーの変更方法DNS レコードの追加 をすでに把握している場合は特に有効です。

このチュートリアルでは、ドメインを プライマリ DNS セットアップ(フル) で追加することを前提とします。


前提条件

自動化で複数サイトを Cloudflare に追加するには、次が必要です。


1. ドメインを追加する

  1. 追加するドメインの一覧を、1 行に 1 ドメイン(改行区切り)で作成し、domains.txt などのファイルに保存します。
  2. bash スクリプト add-multiple-zones.sh を作成し、次の内容を追加します。domains.txt を同じディレクトリに置くか、パスを合わせて更新します。
  for domain in $(cat domains.txt); do
    printf "Adding ${domain}:\n"

    curl https://api.cloudflare.com/client/v4/zones \
    --header "Authorization: Bearer <API_TOKEN>" \
    --header "Content-Type: application/json" \
    --data '{
      "account": {
        "id":"<ACCOUNT_ID>"
      },
      "name": "'"$domain"'",
      "type": "full"
    }'

    printf "\n\n"
  done
  1. コマンドラインを開き、次を実行します。
bash add-multiple-zones.sh

ドメインを追加したあと、そのドメインは Pending Nameserver Update 状態になります。

追加オプション

jq

jq は、JSON 出力を解析して整形するコマンドラインツールです。

このチュートリアルの追加オプション手順を完了するには、このツールが必要です。

echo '{"foo":{"bar":"foo","testing":"hello"}}' | jq .

詳細は jqドキュメント を参照してください。

クイックスキャン

Cloudflare は、ゾーンの DNS レコード投入を助ける クイックスキャン を提供しています。このスキャンは、よく使われるレコード名とタイプの定義済みリストに基づく最善努力の処理です。

この API 呼び出しにはドメイン ID が必要です。次の場所で確認できます。

上記の最初の方法で jq を使い、スクリプト add-multiple-zones.sh を変更してドメイン ID を取り出し、続けて DNS レコードのクイックスキャン API を呼び出します。

  for domain in $(cat domains.txt); do
    printf "Adding ${domain}:\n"

    add_output=`curl https://api.cloudflare.com/client/v4/zones \
      --header "Authorization: Bearer <API_TOKEN>" \
      --header "Content-Type: application/json" \
      --data '{
        "account": {
          "id":"<ACCOUNT_ID>"
        },
        "name": "'"$domain"'",
        "type": "full"
      }'`

    echo $add_output | jq .

    domain_id=`echo $add_output | jq -r .result.id`

    printf "\n\n"
    printf "DNS quick scanning ${domain}:\n"

    scan_output=`curl --request POST https://api.cloudflare.com/client/v4/zones/$domain_id/dns_records/scan \
      --header "X-Auth-Email: <EMAIL>" \
      --header "X-Auth-Key: <API_KEY>"`

    echo $scan_output | jq .

  done

2. ネームサーバーを更新する

各ドメインを Cloudflare 上で有効にするには、フルセットアップ または パーシャルセットアップ のいずれかで有効化する必要があります。次のスクリプトは、各ドメインに関連付けられたネームサーバーの一覧を出力します。

ゾーンのネームサーバーは、次の場所で確認できます。

  1. スクリプト add-multiple-zones.sh を変更し、Create Zone の JSON レスポンスから CSV を出力します。
  for domain in $(cat domains.txt); do
    printf "Adding ${domain}:\n"

    add_output=`curl https://api.cloudflare.com/client/v4/zones \
      --header "Authorization: Bearer <API_TOKEN>" \
      --header "Content-Type: application/json" \
      --data '{
        "account": {
          "id": "<ACCOUNT_ID>"
        },
        "name": "'"$domain"'",
        "type": "full"
      }'`

    # Create csv of nameservers
    echo $add_output | jq -r '[.result.name,.result.id,.result.name_servers[]] | @csv' >> /tmp/domain_nameservers.csv

    domain_id=`echo $add_output | jq -r .result.id`

    printf "\n\n"
    printf "DNS quick scanning ${domain}:\n"

    scan_output=`curl --request POST https://api.cloudflare.com/client/v4/zones/$domain_id/dns_records/scan \
      --header "X-Auth-Email: <EMAIL>" \
      --header "X-Auth-Key: <API_KEY>"`

    echo $scan_output | jq .

  done

  printf "name_servers are saved in /tmp/domain_nameservers"
  cat /tmp/domain_nameservers.csv
ID ZONE NAME SERVERS
<ZONE_ID> example.com arya.ns.cloudflare.com, tim.ns.cloudflare.com
  1. NAME SERVERS 列の値を使い、各ドメインのレジストラで ネームサーバーを更新 します。

制限事項

一度に追加できるドメイン数には上限があります。具体的には、10 分あたり最大 25 ドメインまで登録できます。

さらに、ドメインが 50 を超え、そのうち保留中のドメインが有効なドメインより多い場合は、追加がブロックされます。追加する前に、保留中のサイトが有効になるまで待つことを推奨します。

よくある問題

この処理でエラーが返った場合、ドメインが未登録(または登録直後)である、サブドメインである、またはその他の理由で無効である可能性があります。詳細は ドメインを追加できない を参照してください。

役に立ちましたか?