grafana_datasource – Manage Grafana datasources

New in version 2.5.

Synopsis

  • Create/update/delete Grafana datasources via API.

Parameters

Parameter Choices/Defaults Comments
access
-
    Choices:
  • direct
  • proxy ←
The access mode for this datasource.
aws_access_key
-
added in 2.8
Default:
""
AWS access key for CloudWatch datasource type when aws_auth_type is keys
aws_assume_role_arn
-
added in 2.8
Default:
""
AWS IAM role arn to assume for CloudWatch datasource type when aws_auth_type is arn
aws_auth_type
-
added in 2.8
    Choices:
  • keys ←
  • credentials
  • arn
Type for AWS authentication for CloudWatch datasource type (authType of grafana api)
aws_credentials_profile
-
added in 2.8
Default:
""
Profile for AWS credentials for CloudWatch datasource type when aws_auth_type is credentials
aws_custom_metrics_namespaces
-
added in 2.8
Default:
""
Namespaces of Custom Metrics for CloudWatch datasource type
aws_default_region
-
added in 2.8
    Choices:
  • 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 default region for CloudWatch datasource type
aws_secret_key
-
added in 2.8
Default:
""
AWS secret key for CloudWatch datasource type when aws_auth_type is keys
basic_auth_password
-
The datasource basic auth password, when basic auth is yes.
basic_auth_user
-
The datasource basic auth user.
Setting this option with basic_auth_password will enable basic auth.
client_cert
-
added in 2.8
TLS certificate path used by ansible to query grafana api
client_key
-
added in 2.8
TLS private key path used by ansible to query grafana api
database
-
Name of the database for the datasource.
This options is required when the ds_type is influxdb, elasticsearch (index name), mysql or postgres.
ds_type
- / required
    Choices:
  • graphite
  • prometheus
  • elasticsearch
  • influxdb
  • opentsdb
  • mysql
  • postgres
  • cloudwatch
  • alexanderzobnin-zabbix-datasource
The type of the datasource.
es_version
-
    Choices:
  • 2
  • 5 ←
  • 56
Elasticsearch version (for ds_type = elasticsearch only)
Version 56 is for elasticsearch 5.6+ where tou can specify the max_concurrent_shard_requests option.
grafana_api_key
-
The Grafana API key.
If set, grafana_user and grafana_password will be ignored.
grafana_url
- / required
The Grafana URL.
interval
-
    Choices:
  • Hourly
  • Daily
  • Weekly
  • Monthly
  • Yearly
For elasticsearch ds_type, this is the index pattern used.
is_default
boolean
    Choices:
  • no ←
  • yes
Make this datasource the default one.
max_concurrent_shard_requests
-
Default:
256
Starting with elasticsearch 5.6, you can specify the max concurrent shard per requests.
name
- / required
The name of the datasource.
org_id
-
Default:
1
Grafana Organisation ID in which the datasource should be created.
Not used when grafana_api_key is set, because the grafana_api_key only belong to one organisation.
password
-
The datasource password
sslmode
-
    Choices:
  • disable
  • require
  • verify-ca
  • verify-full
SSL mode for postgres datasource type.
state
-
    Choices:
  • absent
  • present ←
Status of the datasource
time_field
-
Default:
"timestamp"
Name of the time field in elasticsearch ds.
For example @timestamp
time_interval
-
Minimum group by interval for influxdb or elasticsearch datasources.
for example >10s
tls_ca_cert
-
The TLS CA certificate for self signed certificates.
Only used when tls_client_cert and tls_client_key are set.
tls_client_cert
-
The client TLS certificate.
If tls_client_cert and tls_client_key are set, this will enable TLS authentication.
Starts with ----- BEGIN CERTIFICATE -----
tls_client_key
-
The client TLS private key
Starts with ----- BEGIN RSA PRIVATE KEY -----
tls_skip_verify
boolean
added in 2.6
    Choices:
  • no ←
  • yes
Skip the TLS datasource certificate verification.
trends
boolean
added in 2.6
    Choices:
  • no
  • yes
Use trends or not for zabbix datasource type
tsdb_resolution
-
    Choices:
  • millisecond
  • second ←
The opentsdb time resolution.
tsdb_version
-
    Choices:
  • 1 ←
  • 2
  • 3
The opentsdb version.
Use 1 for <=2.1, 2 for ==2.2, 3 for ==2.3.
url
- / required
The URL of the datasource.

aliases: ds_url
url_password
-
added in 2.7
Default:
"admin"
The Grafana API password.

aliases: grafana_password
url_username
-
added in 2.7
Default:
"admin"
The Grafana API user.

aliases: grafana_user
use_proxy
boolean
added in 2.8
    Choices:
  • no
  • yes ←
Boolean of whether or not to use proxy.
user
-
The datasource login user for influxdb datasources.
validate_certs
boolean
    Choices:
  • no
  • yes ←
Whether to validate the Grafana certificate.
with_credentials
boolean
    Choices:
  • no ←
  • yes
Whether credentials such as cookies or auth headers should be sent with cross-site requests.

Examples

---
- name: Create elasticsearch datasource
  grafana_datasource:
    name: "datasource-elastic"
    grafana_url: "https://grafana.company.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "elasticsearch"
    ds_url: "https://elastic.company.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
  grafana_datasource:
    name: "datasource-influxdb"
    grafana_url: "https://grafana.company.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 postgres datasource
  grafana_datasource:
    name: "datasource-postgres"
    grafana_url: "https://grafana.company.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "postgres"
    ds_url: "postgres.company.com:5432"
    database: "db"
    user: "postgres"
    password: "iampgroot"
    sslmode: "verify-full"

- name: Create cloudwatch datasource
  grafana_datasource:
    name: "datasource-cloudwatch"
    grafana_url: "https://grafana.company.com"
    grafana_user: "admin"
    grafana_password: "xxxxxx"
    org_id: "1"
    ds_type: "cloudwatch"
    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"

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
after
dictionary
changed
datasource updated by module

Sample:
{'access': 'proxy', 'basicAuth': False, 'database': 'test_*', 'id': 1035, 'isDefault': False, 'jsonData': {'esVersion': 5, 'timeField': '@timestamp', 'timeInterval': '10s'}, 'name': 'grafana_datasource_test', 'orgId': 1, 'type': 'elasticsearch', 'url': 'http://elastic.company.com:9200', 'user': '', 'password': '', 'withCredentials': False}
before
dictionary
changed
datasource returned by grafana api

Sample:
{'access': 'proxy', 'basicAuth': False, 'database': 'test_*', 'id': 1035, 'isDefault': False, 'jsonData': {'esVersion': 5, 'timeField': '@timestamp', 'timeInterval': '1m'}, 'name': 'grafana_datasource_test', 'orgId': 1, 'type': 'elasticsearch', 'url': 'http://elastic.company.com:9200', 'user': '', 'password': '', 'withCredentials': False}
id
integer
success
Id of the datasource

Sample:
42
name
string
success
name of the datasource created.

Sample:
test-ds


Status

Authors

  • Thierry Sallé (@seuf)
  • Martin Wang (@martinwangjian)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.