自動化を通じて複数のサイトを追加する
Cloudflareに複数のサイトを一度に、より効率的に追加するには、Cloudflare APIを使用することができます。
複数のサイトを追加することは、以下のような場合に便利です:
- 複数のドメインが単一の正規ドメインにマッピングされている(例えば、異なる国のドメイン -
.com.au、.co.ukなど - をCloudflareで保護したい場合)。 - パートナー ↗や代理店、ITコンサルタントであり、顧客のために複数のドメインを管理している。
- 既存のサイトをCloudflareに移行している。
APIを使用することで、特にネームサーバーの変更方法やDNSレコードの追加方法にすでに慣れている場合、複数のサイトを迅速かつ効率的に追加できます。
このチュートリアルでは、ドメインがフルモードを使用して追加されることを前提としています。
自動化を通じてCloudflareに複数のサイトを追加するには、以下が必要です:
- 既存のCloudflareアカウント。
curlを使用したコマンドライン- 次のいずれかの権限を持つCloudflareAPIトークン:
- ゾーンレベルの
Administrator - ゾーンレベルの
Zone: EditおよびDNS: Edit - アカウントレベルの
Domain Administrator
- ゾーンレベルの
- 各ドメインのレジストラでDNSSECを無効にしていること(ドメイン名を購入した場所)。
- DNSSECを無効にせずに既存のDNSゾーンを移行するには、このチュートリアルに従ってください。
Provider-specific instructions
This is not an exhaustive list of how to update DS records in other providers, but the following links may be helpful:
- 追加したいドメインのリストを作成し、各ドメインを別の行に(改行で区切って)
domains.txtというファイルに保存します。 add-multiple-zones.shというbashスクリプトを作成し、以下を追加します。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- コマンドラインを開いて、次のように実行します:
bash add-multiple-zones.shドメインを追加した後、そのドメインはPending Nameserver Updateの状態になります。
jq ↗は、JSON出力を解析し、美化するコマンドラインツールです。
このツールは、このチュートリアルの追加オプションステップを完了するための要件です。
echo '{"foo":{"bar":"foo","testing":"hello"}}' | jq .詳細については、jqのドキュメント ↗を参照してください。
Cloudflareは、ゾーンのDNSレコードを自動的に入力するのを助けるクイックスキャンを提供しています。このスキャンは、一般的に使用されるレコード名とタイプの事前定義されたリストに基づく最善の努力の試みです。
このAPI呼び出しには、ドメインのIDが必要です。これは以下の場所で見つけることができます:
上記の最初のオプションでjqを使用して、スクリプトadd-multiple-zones.shを修正し、ドメインIDを抽出し、その後のAPI呼び出しを実行してDNSレコードをクイックスキャンします。
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各ドメインがCloudflareでアクティブになるためには、フルセットアップまたは部分セットアップのいずれかで有効化する必要があります。以下のスクリプトは、各ドメインに関連付けられたネームサーバーのリストを出力します。
ゾーンのネームサーバーは以下の場所で見つけることができます:
- スクリプト
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" }'`
# ネームサーバーのCSVを作成 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 |
- NAME SERVERS列の値を使用して、各ドメインのレジストラでネームサーバーを更新します。
There are limitations on the number of domains you can add at a time. If you attempt to add more than 50 domains at a time, any additional domains will be blocked until your current domains are active.
その後、Cloudflareアカウントに関連付けられたアクティブなサイトよりも多くの保留中のサイトを持つことはできません。追加のドメインを追加する前に、保留中のサイトが有効化される ↗まで待つことをお勧めします。
このプロセスでエラーが返された場合、ドメインが登録されていない(または登録されたばかり)、サブドメインである、または無効である可能性があります。詳細については、ドメインを追加できないを参照してください。