4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PulumiAdvent Calendar 2021

Day 8

Cloudflare の Zone Resource を Pulumi (TypeScript) で管理する

Last updated at Posted at 2021-12-21

はじめに

Cloudflare で管理している Zone Resource を Pulumi で管理する方法を記載します。
この記事では、すでに Cloudflare で作成済みのリソースを import します。

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

リソースの import を行う

今回は Cloudflare 上で管理する mziyut.com の Zone Resource を import します。
Pulumi も terraform などと同様に pulumi import コマンドを実行し state ファイルにリソース情報を追記します。

xxxxxxxxxxxxxxxxxxxxxxxx は Zone ID を指定してください。
Zone ID は Cloudflare の Console か API などで確認できます

pulumi import cloudflare:index/zone:Zone mziyut_com xxxxxxxxxxxxxxxxxxxxxxxx

^ の 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 mziyut_com = new cloudflare.Zone("mziyut_com", {zone: ""}, {
    protect: true,
});

Terraform の時とちがい、先に tf ファイルにリソースを定義し取り込みを実行する必要がないため
少しだけ Terraform よりも簡単にリソースの取り込みを行うことができます。

protect リソースについて

Pulumi は import したリソースに対して protect という状態を付与します。
protect されたリソースは pulumi destroy などを直接実行し削除することはできません。

もし import したリソースを操作したくなった場合は optsprotect: false を指定し pulumi up を実行してするか、pulumi state unprotect を実行してからリソースを操作するようにしてください

ファイルにリソース情報を追記する

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

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

const mziyut_com = new cloudflare.Zone("mziyut_com", {zone: ""}, {
    protect: true,
});

Pulumi には terraform の state show に値する コマンドはありません。

import されているリソースの状態を確認したい場合
pulumi stack export を実行すると JSON を出力できるため該当のリソースを検索し参照してください

Reference

4
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?