LoginSignup
3
0

Cloudflare の DNS Record を Pulumi (TypeScript) で管理する

Last updated at Posted at 2021-12-23

はじめに

Cloudflare で管理していた DNS Record を Pulumi (TypeScript) で管理する方法を記載します。
この記事では、すでに Cloudflare で作成済みの DNS Record を import していきます。

Pulumi の Project で Cloudflare のリソースを管理できるように設定されていることを前提に記載します。
設定が終わっていない方は以下記事を参考に設定を行ってください

DNS Record の import を行う

今回は Cloudflare 上で管理する mziyut.com の DNS Record を import します。
新規で DNS Record を追加する場合は、「DNS Record 情報をファイルに追記する」まで読み飛ばしてください。

Pulumi に Cloudflare の DNS Record を import するコマンドは以下となります。

今回、 import するドメインは CNAME で定義されている mziyut.com を使用します
xxxxxx/yyyyyyxxxxxx は Zone ID を指定し、 yyyyyy は Record ID を指定してください

pulumi import cloudflare:index/record:Record record_mziyut_com xxxxxx/yyyyyy

Zone ID や Record ID は Cloudflare の API から参照することができます

^ の import コマンドを実行すると pulumi up など実行したときと同様に
state の変更状況を出力した後、index.ts などに追記すべきサンプルコードを出力してくれます。

Please copy the following code into your Pulumi application. Not doing so
will cause Pulumi to report that an update will happen on the next update command.

Please note that the imported resources are marked as protected. To destroy them
you will need to remove the `protect` option and run `pulumi update` *before*
the destroy will take effect.

import * as pulumi from "@pulumi/pulumi";
import * as cloudflare from "@pulumi/cloudflare";

const record_mziyut_com = new cloudflare.Record("record_mziyut_com", {
    allowOverwrite: false,
    name: "mziyut.com",
    proxied: true,
    type: "CNAME",
    zoneId: "YOUR_RESOURCE_NAME",
}, {
    protect: true,
});

DNS Record 情報をファイルに追記する

Import 時に出力されたコードを index.ts に追記します。
出力されているコードはあくまでサンプルと考え、適切なオプションを付与してください。

今回は以下記事で Zone Resource を import しているためその情報と併せて index.ts に記載します。

index.ts
import * as pulumi from "@pulumi/pulumi"
import * as cloudflare from "@pulumi/cloudflare"

const zoneMziyutCom = new cloudflare.Zone("mziyut_com", {
	zone: "mziyut.com",
	plan: "xxxx",
	type: "full",
}, {
    protect: true,
})

const record_mziyut_com = new cloudflare.Record("record_mziyut_com", {
    allowOverwrite: false,
    name: "mziyut.com",
    proxied: true,
    type: "CNAME",
    zoneId: mziyut_com.id,
}, {
    protect: true,
})

ファイルに追記したら pulumi preview を実行し取り込んだ state に差分が生じないことを確認してください

Reference

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0