尝试使用Terraformer手动创建的Datadog仪表板代码进行生成.
首先
大家好,我是asmg。这次我们进行了手动将Datadog的仪表板编码的项目,但是从头开始创建很麻烦,所以我尝试寻找并考虑了一种简单生成的方法。
本文所针对的人群
由于本文着重介绍如何利用Terraformer生成Datadog仪表盘,所以不涉及Terraform代码。因此,我们假定读者对Terraform的语法等有一定的理解。
本文的目标
本文旨在讲述如何使用Terraformer将手动创建的Datadog仪表板转化为可编码的过程。
这次要使用的东西
执行环境
- Mac Book pro 14inch M1 PRO
工具
-
- Terraformer version: 0.8.21
Supported Providers datadog version: 3.12.0
Terraform version: 0.13.0
Terraformer是什么?
这是一个CLI工具(第三方工具),可以从Google提供的现有基础设施生成Terraform文件。
通过使用Terraformer,可以将手动创建的云环境和监控工具的环境进行代码化。
使用 Terraformer 时需要注意的事项
在使用Terrafomer之前,您需要安装Terraform。此外,Terraformer不支持Terraform版本0.14.x。为了使用Terraformer,您需要使用Terraform版本0.13.x。
支持terraform 0.13版本(如果使用terraform 0.11,请使用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 文件,然后进入该文件所在的文件夹,并执行 terraform init。
.
└── 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仪表板的Terraform文件
由于事前准备工作已经完成,所以我希望输出Datadog仪表板的Terraform文件。
$ terraformer import datadog --resources=dashboard --api-key=<API_KEY> --app-key=<APP_KEY> --filter=dashboard=<dashboard_id>
执行该命令将生成文件。
.
├── generated
│ └── datadog
│ └── dashboard
│ ├── dashboard.tf
│ ├── outputs.tf
│ ├── provider.tf
│ └── terraform.tfstate
└── main.tf
点
Dashboardをフィルタリングしたい場合には、–filter=dashboard={dashboard_id}でフィルタリングすることができます。
dashboard_idはDatadog DashboardのURLからわかります。
https://app.datadoghq.com/dashboard/{dashboard_id}/になります。
可以确认实际上可以生成仪表板吗?
由于Datadog仪表板Terraform文件已经生成并输出完毕,现在我想确认生成的文件是否能正确输出到Datadog的仪表板。
请将刚刚生成的文件夹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
如果申请成功,最终将会在Datadog仪表盘上生成一个仪表盘,并输出如下结果。
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
问题在于执行。
-
- 无法以保持手动创建的Dashboard Widgets的顺序来生成。
- Widgets的标题有时无法正确显示。
因为在以下问题中提到了问题1,所以我尝试根据问题来降低Terraformer的版本至0.8.18并进行测试。
结果,问题一和问题二都得到了解决!
汇总
如果Datadog Dashboard的小部件顺序无法保持,则建议将版本降至0.8.18。(截至2022年6月28日)
我使用Terraformer实现了Datadog Dashboard的基础设施即代码(IaC)。在生成过程中可能会引起关注,但我认为通过这个步骤可以将Datadog Dashboard转化为代码。