Datadog のリソースを Terraform にインポートする
概要
Terraform はすぐに使える方法として、terraform import コマンドで既存のリソースを terraform の状態にインポートすることができます。
これは terraform import <resource_type>.<resource_name> <existing_id> というコマンドで実行することができます。
この方法は state only であり、HCL リソースを terraform のコンフィギュレーションファイルに完全に定義しておく必要があります。構成を完全にインポートするには、Terraformer のようなツールを使用することができます。
terraformer project では、リソースを状態と HCL 構成の両方としてインポートすることができます。
インストールしたら、terraform ディレクトリに基本的な main.tf をセットアップします。
terraform 0.13+ の構文を使用していますが、その他の構成は Datadog プロバイダー公式ドキュメントに記載されています。
# main.tf
terraform {
  required_providers {
    datadog = {
      source  = "DataDog/datadog"
    }
  }
}
# Datadog プロバイダーの構成
provider "datadog" {}
次に、このディレクトリから terraform init を実行し、Datadog terraform プロバイダーを引き込みます。
これで terraformer を使ってリソースのインポートを開始することができるようになりました。例えば、Dashboard abc-def-ghi をインポートするには、次のように実行します。
terraformer import datadog --resources=dashboard --filter=dashboard=abc-def-ghi --api-key <YOUR_API_KEY> --app-key <YOUR_APP_KEY> --api-url <YOUR_DATADOG_SITE_URL>
これにより、terraform の状態ファイルと、インポートしたリソースを表す HCL terraform コンフィギュレーションファイルの両方を含むフォルダ generated が生成されます。
generated
└── datadog
    └── dashboard
        ├── dashboard.tf
        ├── outputs.tf
        ├── provider.tf
        └── terraform.tfstate
- dashboard.tf: 新しくインポートされたダッシュボードの HCL コンフィギュレーションファイル
- outputs.tf: 他の構成で潜在的に使用するための出力を含む HCL
- provider.tf:- main.tfファイルにあるような、プロバイダーの HCL 初期化
- terraform.tfstate: インポートしたダッシュボードを表す terraform の状態
すべての例のコマンドは --api-key、--app-key、--api-url フラグを必要とします。
- すべてのモニターをインポートします: terraformer import datadog --resources=monitor
- ID が 1234 のモニターをインポートします: terraformer import datadog --resources=monitor --filter=monitor=1234
- ID が 1234 と 12345 のモニターをインポートします: terraformer import datadog --resources=monitor --filter=monitor=1234:12345
- すべてのモニターとダッシュボードをインポートします: terraformer import datadog --resources=monitor,dashboard
- ID が 1234 のモニターと ID が abc-def-ghi のダッシュボードをインポートします: terraformer import datadog --resources=monitor,dashboard --filter=monitor=1234,dashboard=abc-def-ghi
バージョン 0.8.10 から、Terraformer は Terraform v0.12.29 を使用して tf/json と tfstate ファイルを生成します。互換性を確保するために、Terraform v0.13.x を使用してアップグレードコマンド terraform 0.13upgrade . を実行します。アップグレードについては Terraform 公式ドキュメントを参照してください。
- terraformer でリソースをインポートします。 
- Terraform - v0.13.xを使用して、生成されたリソースディレクトリに- cdして- terraform 0.13upgrade .を実行します。
 
- terraform initを実行して、プロバイダーのインストーラーを再実行します。
 
- terraform applyを実行して、Terraform の状態ファイルにアップグレードを適用します。