community.grafana.grafana_datasource 模块 – 管理 Grafana 数据源

注意

此模块是 community.grafana 集合 (版本 2.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.grafana

要在 playbook 中使用它,请指定: community.grafana.grafana_datasource

概要

  • 通过 API 创建/更新/删除 Grafana 数据源。

参数

参数

注释

access

字符串

此数据源的访问模式。

选项

  • "direct"

  • "proxy" ← (默认)

additional_json_data

字典

定义的数据用于数据源 jsonData

数据可能被特定定义的参数(如 zabbix_user)覆盖

默认值: {}

additional_secure_json_data

字典

定义的数据用于数据源 secureJsonData

数据可能被特定定义的参数(如 tls_client_cert)覆盖

存储为安全数据,请参见 enforce_secure_data 和注释!

默认值: {}

aws_access_key

字符串

aws_auth_typekeys 时,CloudWatch 数据源类型的 AWS 访问密钥

存储为安全数据,请参见 enforce_secure_data 和注释!

默认值: ""

aws_assume_role_arn

字符串

aws_auth_typearn 时,CloudWatch 数据源类型要承担的 AWS IAM 角色 ARN

默认值: ""

aws_auth_type

字符串

CloudWatch 数据源类型的 AWS 身份验证类型(grafana api 的 authType)

选项

  • "keys" ← (默认)

  • "credentials"

  • "arn"

  • "default"

aws_credentials_profile

字符串

aws_auth_typecredentials 时,CloudWatch 数据源类型的 AWS 凭证配置文件

默认值: ""

aws_custom_metrics_namespaces

字符串

CloudWatch 数据源类型的自定义指标的命名空间

aws_default_region

字符串

CloudWatch 数据源类型的 AWS 默认区域

选项

  • "ap-northeast-1"

  • "ap-northeast-2"

  • "ap-southeast-1"

  • "ap-southeast-2"

  • "ap-south-1"

  • "ca-central-1"

  • "cn-north-1"

  • "cn-northwest-1"

  • "eu-central-1"

  • "eu-west-1"

  • "eu-west-2"

  • "eu-west-3"

  • "sa-east-1"

  • "us-east-1" ← (默认)

  • "us-east-2"

  • "us-gov-west-1"

  • "us-west-1"

  • "us-west-2"

aws_secret_key

字符串

aws_auth_typekeys 时,CloudWatch 数据源类型的 AWS 密钥

存储为安全数据,请参见 enforce_secure_data 和注释!

默认值: ""

azure_client

字符串

用于身份验证的 Azure AD 应用注册的应用程序/客户端 ID。

azure_cloud

字符串

Azure 帐户的国家/地区云

选项

  • "azuremonitor" ← (默认)

  • "chinaazuremonitor"

  • "govazuremonitor"

  • "germanyazuremonitor"

azure_secret

字符串

用于身份验证的 Azure AD 应用注册的应用程序客户端密钥

azure_tenant

字符串

用于身份验证的 Azure AD 应用注册的目录/租户 ID

basic_auth_password

字符串

basic authtrue 时的基本身份验证密码。

存储为安全数据,请参见 enforce_secure_data 和注释!

basic_auth_user

字符串

数据源的基本身份验证用户。

设置此选项和 basic_auth_password 将启用基本身份验证。

client_cert

路径

要用于 SSL 客户端身份验证的 PEM 格式证书链文件。

此文件还可以包含密钥,如果包含密钥,则不需要 *client_key*

client_key

路径

包含要用于 SSL 客户端身份验证的私钥的 PEM 格式文件。

如果 *client_cert* 包含证书和密钥,则不需要此选项。

database

字符串

数据源的数据库名称。

ds_typeinfluxdbelasticsearch(索引名称)、mysqlpostgres时,此选项是必需的。

默认值: ""

ds_type

字符串

数据源的类型。

state=present时,此选项是必需的。

选项

  • "graphite"

  • "prometheus"

  • "elasticsearch"

  • "influxdb"

  • "opentsdb"

  • "mysql"

  • "postgres"

  • "cloudwatch"

  • "alexanderzobnin-zabbix-datasource"

  • "grafana-azure-monitor-datasource"

  • "sni-thruk-datasource"

  • "camptocamp-prometheus-alertmanager-datasource"

  • "loki"

  • "redis-datasource"

  • "tempo"

  • "quickwit-quickwit-datasource"

ds_url

字符串

数据源的URL。

state=present时,此选项是必需的。

enforce_secure_data

布尔值

默认情况下,安全数据不会更新(参见注释!)

要更新安全数据,您必须启用此选项!

启用此选项后,任务将始终报告 changed=True

选项

  • false ← (默认)

  • true

es_version

字符串

Elasticsearch 版本(仅限于ds_type = elasticsearch)。

版本 56 用于 Elasticsearch 5.6 及更高版本,您可以在其中指定max_concurrent_shard_requests选项。

选项

  • "2"

  • "5"

  • "56"

  • "60"

  • "70"

  • "7.7+"

  • "7.10+" ← (默认)

  • "8.0+"

grafana_api_key

字符串

Grafana API 密钥。

如果设置了此选项,则将忽略url_usernameurl_password

interval

字符串

对于 Elasticsearch ds_type,这是使用的索引模式。

选项

  • "" ← (默认)

  • "Hourly"

  • "Daily"

  • "Weekly"

  • "Monthly"

  • "Yearly"

is_default

布尔值

将此数据源设置为默认数据源。

选项

  • false ← (默认)

  • true

max_concurrent_shard_requests

整数

从 Elasticsearch 5.6 开始,您可以指定每个请求的最大并发分片数。

默认值: 256

name

字符串 / 必需

数据源的名称。

org_id

整数

应在其中创建数据源的 Grafana 组织 ID。

当设置了grafana_api_key时,此选项不会使用,因为grafana_api_key只属于一个组织。

org_name互斥。

默认值: 1

org_name

字符串

应在其中创建数据源的 Grafana 组织名称。

当设置了grafana_api_key时,此选项不会使用,因为grafana_api_key只属于一个组织。

org_id互斥。

password

字符串

数据源密码。

存储为安全数据,请参见 enforce_secure_data 和注释!

默认值: ""

sslmode

字符串

用于postgres数据源类型的 SSL 模式。

选项

  • "disable" ← (默认)

  • "require"

  • "verify-ca"

  • "verify-full"

state

字符串

数据源的状态

选项

  • "absent"

  • "present" ← (默认)

time_field

字符串

elasticsearch 数据源中时间字段的名称。

例如@timestamp

默认值: "@timestamp"

time_interval

字符串

用于influxdbelasticsearchprometheus数据源的最小 group by 间隔。

例如>10s

tls_ca_cert

字符串

自签名证书的 TLS CA 证书。

仅当设置了tls_client_certtls_client_key时使用。

存储为安全数据,请参见 enforce_secure_data 和注释!

tls_client_cert

字符串

客户端 TLS 证书。

如果设置了tls_client_certtls_client_key,这将启用 TLS 身份验证。

以 —– BEGIN CERTIFICATE —– 开头

存储为安全数据,请参见 enforce_secure_data 和注释!

tls_client_key

字符串

客户端 TLS 私钥

以 —– BEGIN RSA PRIVATE KEY —– 开头

存储为安全数据,请参见 enforce_secure_data 和注释!

tls_skip_verify

布尔值

跳过 TLS 数据源证书验证。

选项

  • false ← (默认)

  • true

布尔值

是否对 zabbix 数据源类型使用趋势。

选项

  • false ← (默认)

  • true

tsdb_resolution

字符串

opentsdb 时间分辨率。

选项

  • "millisecond"

  • "second" ← (默认)

tsdb_version

整数

opentsdb 版本。

对于 <=2.1 使用1,对于 ==2.2 使用2,对于 ==2.3 使用3

选项

  • 1 ← (默认)

  • 2

  • 3

uid

字符串

数据源的 uid。

url

别名:grafana_url

字符串 / 必需

Grafana URL。

url_password

别名:grafana_password

字符串

用于 API 身份验证的 Grafana 密码。

默认值: "admin"

url_username

别名:grafana_user

字符串

用于 API 身份验证的 Grafana 用户。

默认值: "admin"

use_proxy

布尔值

如果为false,即使在目标主机上的环境变量中定义了代理,也不会使用代理。

选项

  • false

  • true ← (默认)

user

字符串

influxdb 数据源的数据源登录用户。

默认值: ""

validate_certs

布尔值

如果为false,则不会验证 SSL 证书。

仅当在使用自签名证书的个人控制站点上使用时,才应将其设置为false

选项

  • false

  • true ← (默认)

with_credentials

布尔值

是否应将 cookie 或身份验证标头等凭据与跨站点请求一起发送。

选项

  • false ← (默认)

  • true

zabbix_password

字符串

Zabbix API 密码

zabbix_user

字符串

Zabbix API 用户

注释

注意

  • 安全数据将被 Grafana API 加密,因此无法在后续运行中进行比较。为解决此问题,安全数据在初始创建后将不会更新!要强制更新安全数据,您必须设置enforce_secure_data=True

  • 提示:由于enforce_secure_data始终报告 changed=True,您可能只需执行一项更新数据源的任务而无需任何安全数据,并创建一个单独的 playbook/任务来更改安全数据。这样就不会破坏任何工作流程。

示例

---
- name: Create elasticsearch datasource
  community.grafana.grafana_datasource:
    name: "datasource-elastic"
    grafana_url: "https://grafana.org.cnpany.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "elasticsearch"
    ds_url: "https://elastic.ac.cnmpany.com:9200"
    database: "[logstash_]YYYY.MM.DD"
    basic_auth_user: "grafana"
    basic_auth_password: "******"
    time_field: "@timestamp"
    time_interval: "1m"
    interval: "Daily"
    es_version: 56
    max_concurrent_shard_requests: 42
    tls_ca_cert: "/etc/ssl/certs/ca.pem"

- name: Create influxdb datasource
  community.grafana.grafana_datasource:
    name: "datasource-influxdb"
    grafana_url: "https://grafana.org.cnpany.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "influxdb"
    ds_url: "https://influx.company.com:8086"
    database: "telegraf"
    time_interval: ">10s"
    tls_ca_cert: "/etc/ssl/certs/ca.pem"

- name: Create influxdbv2 datasource using fluxql
  community.grafana.grafana_datasource:
    name: "datasource-influxdb-flux"
    grafana_url: "https://grafana.org.cnpany.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "influxdb"
    ds_url: "https://influx.company.com:8086"
    additional_json_data:
      version: "Flux"
      organization: "organization"
      defaultBucket: "bucket"
      tlsSkipVerify: false
    additional_secure_json_data:
      token: "token"

- name: Create postgres datasource
  community.grafana.grafana_datasource:
    name: "datasource-postgres"
    grafana_url: "https://grafana.org.cnpany.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "postgres"
    ds_url: "postgres.company.com:5432"
    database: "db"
    user: "postgres"
    sslmode: "verify-full"
    additional_json_data:
      postgresVersion: 12
      timescaledb: false
    additional_secure_json_data:
      password: "iampgroot"

- name: Create cloudwatch datasource
  community.grafana.grafana_datasource:
    name: "datasource-cloudwatch"
    grafana_url: "https://grafana.org.cnpany.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "cloudwatch"
    ds_url: "http://monitoring.us-west-1.amazonaws.com"
    aws_auth_type: "keys"
    aws_default_region: "us-west-1"
    aws_access_key: "speakFriendAndEnter"
    aws_secret_key: "mel10n"
    aws_custom_metrics_namespaces: "n1,n2"

- name: grafana - add thruk datasource
  community.grafana.grafana_datasource:
    name: "datasource-thruk"
    grafana_url: "https://grafana.org.cnpany.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "sni-thruk-datasource"
    ds_url: "https://thruk.company.com/sitename/thruk"
    basic_auth_user: "thruk-user"
    basic_auth_password: "******"

# handle secure data - workflow example
# this will create/update the datasource but dont update the secure data on updates
# so you can assert if all tasks are changed=False
- name: create prometheus datasource
  community.grafana.grafana_datasource:
    name: openshift_prometheus
    ds_type: prometheus
    ds_url: https://openshift-monitoring.company.com
    access: proxy
    tls_skip_verify: true
    additional_json_data:
      httpHeaderName1: "Authorization"
    additional_secure_json_data:
      httpHeaderValue1: "Bearer ihavenogroot"

# in a separate task or even play you then can force to update
# and assert if each datasource is reporting changed=True
- name: update prometheus datasource
  community.grafana.grafana_datasource:
    name: openshift_prometheus
    ds_type: prometheus
    ds_url: https://openshift-monitoring.company.com
    access: proxy
    tls_skip_verify: true
    additional_json_data:
      httpHeaderName1: "Authorization"
    additional_secure_json_data:
      httpHeaderValue1: "Bearer ihavenogroot"
    enforce_secure_data: true

返回值

常见的返回值已在此处记录,以下是此模块特有的字段

描述

datasource

字典

模块创建/更新的数据源

返回:changed

示例: {"access": "proxy", "basicAuth": false, "database": "test_*", "id": 1035, "isDefault": false, "jsonData": {"esVersion": 5, "timeField": "@timestamp", "timeInterval": "10s"}, "name": "grafana_datasource_test", "orgId": 1, "password": "", "secureJsonFields": {"JustASecureTest": true}, "type": "elasticsearch", "url": "https://elastic.ac.cnmpany.com:9200", "user": "", "withCredentials": false}

作者

  • Thierry Sallé (@seuf)

  • Martin Wang (@martinwangjian)

  • Rémi REY (@rrey)