LoginSignup
10
0

More than 1 year has passed since last update.

Terraformerを利用して手動で作成したDatadog DashboardのCodeを生成してみた

Posted at

はじめに

皆さんこんにちはasmgです。今回は、手動でDatadogのDashboardをCode化する案件を行なったのですが、一から作成するのが大変だったので簡単に生成する方法を模索して検討してみました。

本記事の対象者

本記事は、Terraformerを利用してDatadog Dashboardの生成にポイントを定めている為、Terraformのコード等には言及しません。なので、Terraformの構文等は理解していることを前提とします。

本記事のゴール

本記事では、手動で作成したDatadog DashboardをTerraformerを利用してCode化するところまでを目的とします。

今回使うもの

実行環境

  • Mac Book pro 14inch M1 PRO

ツール類

  • Terraformer version: 0.8.21
    • Supported Providers datadog version: 3.12.0
  • Terraform version: 0.13.0

Terraformerとは?

Googleが提供している既存のインフラストラクチャからTerraformファイルを生成する
CLIツール(サードパーティツール)になります。

Terraformerを利用することによって、手動で作成されたクラウド環境や監視ツールの環境をCode化することが可能になります。

Terraformerを利用するにあっての注意点

Terrafomerを利用するにあたって、Terraformをインストールしておく必要があります。
また、TerraformerはTerraform version 0.14.xをサポートしていません。Terraformerを利用するためにはTerraform version 0.13.xを利用する必要があります。

Support terraform 0.13 (for terraform 0.11 use v0.7.9).

Terraformerの導入方法

ここでは、terraformは導入されていることを前提として記事を進めていきます。

$ curl -LO https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl -s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-datadog-darwin-amd64
$ chmod +x terraformer-datadog-darwin-amd64
$ sudo mv terraformer-datadog-darwin-amd64 /usr/local/bin/terraformer

今回は、Datadogの使用しか考えていないのでDatadogのみを指定しています。
詳しいインストール方法は以下のリンクを参考にしてください。

実行方法(terraformファイルの出力)

事前準備

まず、main.tf作成し、main.tfがあるフォルダーまで移動しterraform initを行います。

フォルダー構成
.
└── main.tf
main.tf
terraform {
  required_version = "= 0.13.0"

  required_providers {
    datadog = {
      source  = "DataDog/datadog"
      version = "3.3.0"
    }
  }
}


provider "datadog" {
  api_key = ""
  app_key = ""
}

ターミナル
$ terraform init

Datadog DashboardのTerraformファイルを出力

事前準備が完了したのでDatadog DashboardのTerraformファイルを出力していきたいと思います。

ターミナル
$ terraformer import datadog --resources=dashboard --api-key=<API_KEY> --app-key=<APP_KEY> --filter=dashboard=<dashboard_id>

コマンドを実行するとファイルが生成されます。

Terraform生成コマンド実行後のファイル構造
.
├── generated
│   └── datadog
│       └── dashboard
│           ├── dashboard.tf
│           ├── outputs.tf
│           ├── provider.tf
│           └── terraform.tfstate
└── main.tf

point

  • Dashboardをフィルタリングしたい場合には、--filter=dashboard={dashboard_id}でフィルタリングすることができます。

  • dashboard_idはDatadog DashboardのURLからわかります。
    https://app.datadoghq.com/dashboard/{dashboard_id}/になります。

実際にDashboardが生成できるか確認

Datadog Dashboard Terraformファイルの出力が完了したので、生成したファイルが正しくDatadogのDashboardに出力できるかを確認していきたいと思います。

先ほど生成したフォルダーgenerated/datadog/dashboard/dashboard.tfを以下のようにコピーしてその後Terraformをplan、applyします。

ファイル構造
.
├── generated
│   └── datadog
│       └── dashboard
│           ├── dashboard.tf
│           ├── outputs.tf
│           ├── provider.tf
│           └── terraform.tfstate
└── main.tf
├── dashboard.tf
コマンドの実行
$terraform plan
$terraform apply

applyすると最終的に以下のような結果が出力されればDatadog DashboardにDashboardが生成されます。

実行結果(一部抜粋)
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

実行しての問題点

  1. 手動で生成したDashboardのWidgetsの順序を保った状態で生成することが出来ない。
  2. Widgetsのタイトルが正常に表示されない場合がある。

1の問題は以下のissueに挙げられていたのでissueをもとにTerraformerのversionを0.8.18まで落として試してみました。

>結果、1、2の問題共に解決することができました!

まとめ

もし、Datadog DashboardのWidgetsの順序が保たれない場合にはversionを0.8.18まで落とすことをお勧めします。(2022年6月28日時点)
Terraformerを利用してDatadog DashboardのIaCを実現しました。生成する際に気になるポイントはありましたが、この手順を踏むことでDatadog DashboardをCode化できると思います。

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