cloudflare_ruleset ↗ リソースでは、Terraform 設定のルールセットを変更すると、Cloudflare プロバイダーがルールを削除して新しいルールを作成することがあります。これは、新しい Terraform 設定内のルールと、既存の Cloudflare 設定内のルールを API が照合できないためです。Terraform 設定のルールセットを変更して適用すると、Cloudflare アカウントまたはゾーンに、異なるルール ID の新しいルールが作成されます。
この動作は、ルール変更後も不変のルール ID を前提とする自動化や監視システムに影響することがあります。
Terraform でルールセットを変更するときに既存のルール ID を維持するには、各ルールに ref フィールドを追加します。
ref フィールドは、ユーザー定義の外部識別子です。ルールセット内の各ルールで一意である必要があります。ref 値を指定すると、プロバイダーは更新後の Terraform 設定のルールと、同じ ref 外部識別子を持つ既存ルールを照合し、ルール ID を保持します。
ref 値は文字列型で、最小長は 1 文字です。例: my_ref。
ルールに ref フィールドを設定したあと、ref の値を変えると Terraform は新しいルールを作成します。
既定では、ルール作成時の ref 値はルール ID と同じです。ref 値は Cloudflare API でも設定できます。
cf-terraforming ↗ で 既存の Cloudflare 設定を Terraform にインポート すると、生成される Terraform 設定には各ルールの ref 値が含まれ、値はルール ID と同じです。
Terraform 設定を手作業で作成し、ルール設定に ref フィールドがない場合は、各ルールに ref を追加してください。ルールセットを変更するたびに新しいルール ID が生成されなくなります。