系列文章
概述
前文最后总结了我的工具选型:
- Grafana Terraform provider
- Jsonnet
我们今天先简单介绍 Grafana Terraform provider.
Grafana Terraform Provider
Grafana provider 为 Grafana 提供配置管理资源。是目前 Grafana 官方提供的,覆盖的 Grafana 资源最全的 IaC 工具。
Grafana Terraform Provider 的代码是建立在 grafana-api-golang-client 之上的。
通过 Grafana Terraform Provider, 我们可以管理:
- Alerting
- Resources
grafana_contact_point
grafana_message_template
grafana_mute_timing
grafana_notification_policy
grafana_rule_group
- Resources
- Cloud
- Resources
grafana_cloud_access_policy
grafana_cloud_access_policy_token
grafana_cloud_api_key
grafana_cloud_plugin_installation
grafana_cloud_stack
grafana_cloud_stack_api_key
grafana_cloud_stack_service_account
grafana_cloud_stack_service_account_token
grafana_machine_learning_holiday
grafana_machine_learning_job
grafana_machine_learning_outlier_detector
- DataSources
grafana_cloud_ips
grafana_cloud_organization
grafana_cloud_stack
- Resources
- Grafana Enterprise
- Resources
grafana_builtin_role_assignment
grafana_data_source_permission
(AWS Managed Grafana 也有这个功能)grafana_report
grafana_role
grafana_role_assignment
grafana_team_external_group
- Resources
- Grafana OSS
- Resources
grafana_annotation
grafana_api_key
grafana_dashboard
grafana_dashboard_permission
grafana_data_source
grafana_folder
grafana_folder_permission
grafana_library_panel
grafana_organization
grafana_organization_preferences
grafana_playlist
grafana_service_account
grafana_service_account_permission
grafana_service_account_token
grafana_team
grafana_team_preferences
grafana_user
- DataSources
grafana_dashboard
grafana_dashboards
grafana_data_source
grafana_folder
grafana_folders
grafana_library_panel
grafana_organization
grafana_organization_preferences
grafana_team
grafana_user
grafana_users
- Resources
- OnCall
- 略
- SLO
- 略
- Synthetic Monitoring
- 略
实战
因为 Grafana 资源相对比较清晰和独立,不像 AWS 会有很多复杂的关联关系。
所以关于 Grafana TF 代码的组织形式可以简单点:
- 可以使 AllInOne 的
.tf
文件 - 也可以根据资源类型,简单拆分为如下即可:
├── dashboard.tf
├── datasource.tf
├── grafana-ds-info.auto.tfvars.json
├── jsonnet (jsonnet 文件夹,dashboard 相关内容都在该文件夹下)
├── main.tf
├── outputs.tf
├── variables.tf
└── versions.tf
下面以第二种组织结构来详细介绍。
创建 Grafana Provider
在 main.tf
中,创建 Grafana Provider:
provider "grafana" {
}
如果只有一套 Grafana, 那么如上的配置完全就够用了。
如果有多套 Grafana, 则可以通过指定 Grafana provider 的 alias
来实现。具体如下:
provider "grafana" {
alias = "aws-managed-grafana"
}
后续使用资源的时候,可以通过指定 provider
来区分,实例如下:
# provision folder
resource "grafana_folder" "play-grafana" {
provider = grafana.aws-managed-grafana
uid = "play-grafana"
title = "play-grafana"
}
标签:source,grafana,Terraform,json,Provider,Grafana,data,example From: https://blog.51cto.com/ewhisper/6512842