コンテンツにスキップ

サイトを追加する

Last reviewed: about 2 months ago

このチュートリアルでは、Pulumi Infrastructure as Code (IaC) を使用して既存のサイトを Cloudflare に移行するための手順を段階的に説明します。これにより、リソース管理ライフサイクルに慣れることができます。特に、ゾーンと新しく追加したサイトを解決するための DNS レコードを作成します。このチュートリアルは、サイトを追加するチュートリアル に記載された手順を完了するために IaC の原則を採用しています。

始める前に

以下を確認してください:

  • このチュートリアルのリソースを編集する権限を持つ Cloudflare アカウントと API トークン。必要に応じて、Cloudflare アカウントにサインアップしてください。トークンには以下の権限が必要です:
    • Zone-Zone-Edit 権限
    • Zone-DNS-Edit 権限
    • include-All zones from an account-<your account> ゾーンリソース
  • Pulumi Cloud アカウント。常に無料の個人プランにサインアップできます。こちらから
  • Pulumi CLI がマシンにインストールされていること。
  • Pulumi がサポートするプログラミング言語が設定されていること。(TypeScript、JavaScript、Python、Go、.NET、Java、または YAML を使用)
  • ドメイン名。チュートリアルを完了するために example.com を使用できます。

Pulumi を初期化する

a. ディレクトリを作成する

このチュートリアル用に新しく空のディレクトリを使用します。

Terminal window
mkdir addsite-cloudflare
cd addsite-cloudflare

b. ログインする

プロンプトで Enter を押して、ブラウザを介して Pulumi Cloud アカウントにログインします。あるいは、Pulumi Cloud アクセストークンを提供することもできます。

Terminal window
pulumi login

c. プログラムを作成する

プログラムを作成するには、希望する言語を選択し、pulumi コマンドを実行します:

Terminal window
pulumi new javascript --name addsite-cloudflare --yes
# プロジェクトが初期化されるまで数秒待ちます

d. 設定を保存する

以下が必要です:

Terminal window
# ESC 環境名を定義する
E=my-dev-env
# 新しい Pulumi ESC 環境を作成する
pulumi config env init --env $E --yes --stack dev
# API_TOKEN を Cloudflare API トークンに置き換える
pulumi env set $E --secret pulumiConfig.cloudflare:apiToken API_TOKEN
# abc123 を Cloudflare アカウント ID に置き換える
pulumi env set $E --plaintext pulumiConfig.accountId abc123
# example.com を登録済みのドメインに置き換えるか、そのままにする
pulumi env set $E --plaintext pulumiConfig.domain example.com
# ESC 環境を確認する
pulumi env open $E
{
"pulumiConfig": {
"accountId": "111222333",
"cloudflare:apiToken": "abc123abc123",
"domain": "example.com"
}
}

e. スタックを作成する

dev スタックをインスタンス化するには、次のコマンドを実行します:

Terminal window
pulumi up --yes --stack dev
# スタックがインスタンス化されるまで数秒待ちます。

この時点では、リソースを定義していないため、空のスタックになります。

ゾーンを追加する

これから、Pulumi Cloudflare パッケージと Cloudflare ゾーンリソースを Pulumi プログラムに追加します。

a. 依存関係をインストールする

Terminal window
npm install @pulumi/cloudflare
added 1 package ...

b. プログラムを修正する

エントリポイントファイルの内容を以下のように置き換えます:

"use strict";
const pulumi = require("@pulumi/pulumi");
const cloudflare = require("@pulumi/cloudflare");
const config = new pulumi.Config();
const accountId = config.require("accountId");
const domain = config.require("domain");
// Cloudflare リソース(ゾーン)を作成する
const zone = new cloudflare.Zone("my-zone", {
zone: domain,
accountId: accountId,
plan: "free",
jumpStart: true,
});
// ゾーン ID をエクスポートする
exports.zoneId = zone.id;

c. 変更を適用する

Terminal window
pulumi up --yes --stack dev
# 変更が適用されるまで数秒待ちます

d. (オプション)ゾーンを確認する

ゾーン作成を確認するために zoneId の値を確認します。

Terminal window
pulumi stack output zoneId
d8fcb6d731fe1c2d75e2e8d6ad63fad5

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

Cloudflare にドメインを追加すると、そのドメインには 2 つの割り当てられた権限のあるネームサーバーが割り当てられます。

a. プログラムを更新する

エントリポイントファイルの最後に、zoneId 変数の下に以下を追加します:

exports.nameservers = zone.nameServers;
exports.status = zone.status;

b. 変更を適用する

Terminal window
pulumi up --yes --stack dev

c. ネームサーバーを取得する

割り当てられたネームサーバーを取得するために nameservers の値を確認します:

Terminal window
pulumi stack output --stack dev

d. レジストラを更新する

ドメインのCloudflareサービスを有効にするために、レジストラでネームサーバーを更新してください。手順はレジストラごとに異なります。この一般的なレジストラの統合リストの下にガイダンスが見つかるかもしれません。

e. ドメインのステータスを確認する

正常に登録されると、ドメインのstatusactiveに変更されます。

Terminal window
pulumi stack output

DNSレコードを追加する

これからドメインにDNSレコードを追加します。

a. プログラムを修正する

以下は、Pulumiプログラムのエントリポイントファイルの最終バージョンです。 エントリポイントファイルの内容を以下のように置き換えてください。

"use strict";
const pulumi = require("@pulumi/pulumi");
const cloudflare = require("@pulumi/cloudflare");
const config = new pulumi.Config();
const accountId = config.require("accountId");
const domain = config.require("domain");
// Cloudflareリソース(ゾーン)を作成
const zone = new cloudflare.Zone("my-zone", {
zone: domain,
accountId: accountId,
plan: "free",
jumpStart: true,
});
// ゾーンIDをエクスポート
exports.zoneId = zone.id;
exports.nameservers = zone.nameServers;
exports.status = zone.status;
const record = new cloudflare.Record("my-record", {
zoneId: zone.id,
name: domain,
value: "192.0.2.1",
type: "A",
proxied: true,
});

b. 変更を適用する

Terminal window
pulumi up --yes --stack dev

セットアップを確認する

Cloudflareが割り当てたネームサーバーに対して2つのnslookupコマンドを実行します。

サイトをテストするには、次のコマンドを実行します:

Terminal window
DOMAIN=$(pulumi config get domain)
NS1=$(pulumi stack output nameservers | jq '.[0]' -r)
NS2=$(pulumi stack output nameservers | jq '.[1]' -r)
nslookup $DOMAIN $NS1
nslookup $DOMAIN $NS2

.NETの場合は、NameserversをOutputとして使用します。

応答がサイトのIPアドレスを返すことを確認してください。

クリーンアップ

この最後のステップでは、チュートリアル全体で使用したリソースとスタックを削除します。

a. リソースを削除する

Terminal window
pulumi destroy --yes

b. スタックを削除する

Terminal window
pulumi stack rm dev

Cloudflareにサイトを追加するために必要なリソースを段階的に定義しました。新しいリソースごとに、pulumi upコマンドを使用してdevスタックに変更を適用します。選択したプログラミング言語でリソースを宣言し、Pulumiが残りを処理します。

次のステップ

Hello Worldチュートリアルに従って、Pulumiを使用してサーバーレスアプリをデプロイしてください。