はじめに
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 したリソースを操作したくなった場合は opts
に protect: false
を指定し pulumi up
を実行してするか、pulumi state unprotect
を実行してからリソースを操作するようにしてください
ファイルにリソース情報を追記する
先ほど import 時に出力されたコードを 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