# grafana_datasource – Manage Grafana datasources

New in version 2.5.

- Synopsis

- Parameters

- Examples

- Return Values

- Status

## 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

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Community. [community]

### Authors

- Thierry Sallé (@seuf)

- Martin Wang (@martinwangjian)

Hint

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