diff --git a/.all-contributorsrc b/.all-contributorsrc
index b7e51435..f1a1cb6d 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -187,6 +187,16 @@
"code",
"test"
]
+ },
+ {
+ "login": "Nemental",
+ "name": "Moritz",
+ "avatar_url": "https://avatars.githubusercontent.com/u/15136847?v=4",
+ "profile": "https://nemental.de",
+ "contributions": [
+ "bug",
+ "code"
+ ]
}
],
"contributorsPerLine": 7,
@@ -195,5 +205,6 @@
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true,
- "commitConvention": "angular"
+ "commitConvention": "angular",
+ "commitType": "docs"
}
diff --git a/README.md b/README.md
index cfdfbc98..ce32c493 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
![](https://github.com/ansible-collections/grafana/workflows/CI/badge.svg?branch=master)
[![Codecov](https://img.shields.io/codecov/c/github/ansible-collections/community.grafana)](https://codecov.io/gh/ansible-collections/community.grafana)
-[![All Contributors](https://img.shields.io/badge/all_contributors-19-orange.svg?style=flat-square)](#contributors-)
+[![All Contributors](https://img.shields.io/badge/all_contributors-20-orange.svg?style=flat-square)](#contributors-)
This repo hosts the `community.grafana` Ansible Collection.
@@ -67,12 +67,9 @@ You can either call modules by their Fully Qualified Collection Namespace (FQCN)
gather_facts: false
connection: local
- collections:
- - community.grafana
-
tasks:
- name: Ensure Influxdb datasource exists.
- grafana_datasource:
+ community.grafana.grafana_datasource:
name: "datasource-influxdb"
grafana_url: "https://grafana.company.com"
grafana_user: "admin"
@@ -93,13 +90,11 @@ In your playbooks, you can set [module defaults](https://github.com/ansible/ansi
```yaml
+---
- hosts: localhost
gather_facts: false
connection: local
- collections:
- - community.grafana
-
module_defaults:
group/community.grafana.grafana:
grafana_url: "https://grafana.company.com"
@@ -108,7 +103,7 @@ In your playbooks, you can set [module defaults](https://github.com/ansible/ansi
tasks:
- name: Ensure Influxdb datasource exists.
- grafana_datasource:
+ community.grafana.grafana_datasource:
name: "datasource-influxdb"
org_id: "1"
ds_type: "influxdb"
@@ -118,7 +113,7 @@ In your playbooks, you can set [module defaults](https://github.com/ansible/ansi
tls_ca_cert: "/etc/ssl/certs/ca.pem"
- name: Create or update a Grafana user
- grafana_user:
+ community.grafana.grafana_user:
name: "Bruce Wayne"
email: "batman@gotham.city"
login: "batman"
@@ -126,6 +121,45 @@ In your playbooks, you can set [module defaults](https://github.com/ansible/ansi
is_admin: true
```
+## Complementary Collection: [`telekom-mms.grafana`](https://github.com/telekom-mms/ansible-role-grafana)
+
+The `telekom-mms.grafana` collection is an Ansible Collection that simplifies the use of the `community.grafana` collection. It provides an Ansible Role for easy integration with `community.grafana`. With this collection, you only need to define the variables for your Grafana resources.
+
+### Requirements
+ ansible-galaxy collection install telekom-mms.grafana
+... or use a requirements.yml:
+`ansible-galaxy collection install -r requirements.yml`
+```yaml
+---
+collections:
+ - name: telekom-mms.grafana
+```
+
+### Example Playbook
+```yaml
+---
+- hosts: localhost
+ gather_facts: false
+ connection: local
+
+ vars:
+ grafana_url: "https://grafana.company.com"
+ grafana_user: "admin"
+ grafana_password: "xxxxxx"
+
+ grafana_datasources:
+ - name: "Loki"
+ ds_type: "loki"
+ ds_url: "http://127.0.0.1:3100"
+ tls_skip_verify: yes
+ grafana_folders:
+ - name: my_service
+ - name: other_service
+
+ roles:
+ - role: telekom-mms.grafana
+```
+
## Testing and Development
If you want to develop new content for this collection or improve what's already here, the easiest way to work on the collection is to clone it into one of the configured [`COLLECTIONS_PATHS`](https://docs.ansible.com/ansible/latest/reference_appendices/config.html#collections-paths), and work on it there.
@@ -219,6 +253,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Pierre 🐛 |
MiksonX 🐛 |
Aliaksandr Mianzhynski 💻 ⚠️ |
+ Moritz 🐛 💻 |
diff --git a/changelogs/fragments/325_true_false.yml b/changelogs/fragments/325_true_false.yml
new file mode 100644
index 00000000..c192d086
--- /dev/null
+++ b/changelogs/fragments/325_true_false.yml
@@ -0,0 +1,2 @@
+minor_changes:
+- default to true/false in docs and code
diff --git a/changelogs/fragments/335-add-datasource-type-tempo.yml b/changelogs/fragments/335-add-datasource-type-tempo.yml
new file mode 100644
index 00000000..18d34a0a
--- /dev/null
+++ b/changelogs/fragments/335-add-datasource-type-tempo.yml
@@ -0,0 +1,2 @@
+minor_changes:
+ - Add support for Grafana Tempo datasource type (https://grafana.com/docs/grafana/latest/datasources/tempo/)
\ No newline at end of file
diff --git a/plugins/callback/grafana_annotations.py b/plugins/callback/grafana_annotations.py
index 04555eae..92b837c1 100644
--- a/plugins/callback/grafana_annotations.py
+++ b/plugins/callback/grafana_annotations.py
@@ -29,7 +29,7 @@
options:
grafana_url:
description: Grafana annotations api URL
- required: True
+ required: true
env:
- name: GRAFANA_URL
ini:
@@ -45,7 +45,7 @@
key: validate_grafana_certs
- section: callback_grafana_annotations
key: validate_certs
- default: True
+ default: true
type: bool
aliases: [ validate_grafana_certs ]
http_agent:
diff --git a/plugins/doc_fragments/basic_auth.py b/plugins/doc_fragments/basic_auth.py
index 8c41acdb..c874457d 100644
--- a/plugins/doc_fragments/basic_auth.py
+++ b/plugins/doc_fragments/basic_auth.py
@@ -30,9 +30,9 @@ class ModuleDocFragment(object):
aliases: [ grafana_password ]
use_proxy:
description:
- - If C(no), it will not use a proxy, even if one is defined in an environment variable on the target hosts.
+ - If C(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts.
type: bool
- default: yes
+ default: true
client_cert:
description:
- PEM formatted certificate chain file to be used for SSL client authentication.
@@ -45,8 +45,8 @@ class ModuleDocFragment(object):
type: path
validate_certs:
description:
- - If C(no), SSL certificates will not be validated.
- - This should only set to C(no) used on personally controlled sites using self-signed certificates.
+ - If C(false), SSL certificates will not be validated.
+ - This should only set to C(false) used on personally controlled sites using self-signed certificates.
type: bool
- default: yes
+ default: true
'''
diff --git a/plugins/modules/grafana_dashboard.py b/plugins/modules/grafana_dashboard.py
index cc2654f6..46d3aeb1 100644
--- a/plugins/modules/grafana_dashboard.py
+++ b/plugins/modules/grafana_dashboard.py
@@ -58,7 +58,7 @@
description:
- Override existing dashboard when state is present.
type: bool
- default: 'no'
+ default: false
dashboard_id:
description:
- Public Grafana.com dashboard id to import
@@ -92,7 +92,7 @@
grafana_api_key: "{{ grafana_api_key }}"
state: present
commit_message: Updated by ansible
- overwrite: yes
+ overwrite: true
path: /path/to/dashboards/foo.json
- name: Import Grafana dashboard Zabbix
diff --git a/plugins/modules/grafana_datasource.py b/plugins/modules/grafana_datasource.py
index 5f865ec5..f743303c 100644
--- a/plugins/modules/grafana_datasource.py
+++ b/plugins/modules/grafana_datasource.py
@@ -46,6 +46,7 @@
- camptocamp-prometheus-alertmanager-datasource
- loki
- redis-datasource
+ - tempo
type: str
ds_url:
description:
@@ -86,7 +87,7 @@
type: str
basic_auth_password:
description:
- - The datasource basic auth password, when C(basic auth) is C(yes).
+ - The datasource basic auth password, when C(basic auth) is C(true).
- Stored as secure data, see C(enforce_secure_data) and notes!
type: str
with_credentials:
@@ -94,7 +95,7 @@
- Whether credentials such as cookies or auth headers should be sent with cross-site
requests.
type: bool
- default: 'no'
+ default: false
tls_client_cert:
description:
- The client TLS certificate.
@@ -123,7 +124,7 @@
description:
- Make this datasource the default one.
type: bool
- default: 'no'
+ default: false
org_id:
description:
- Grafana Organisation ID in which the datasource should be created.
@@ -217,7 +218,7 @@
description:
- Use trends or not for zabbix datasource type.
type: bool
- default: False
+ default: false
aws_auth_type:
description:
- Type for AWS authentication for CloudWatch datasource type (authType of grafana
@@ -742,7 +743,8 @@ def setup_module_object():
'camptocamp-prometheus-alertmanager-datasource',
'sni-thruk-datasource',
'redis-datasource',
- 'loki']),
+ 'loki',
+ 'tempo']),
ds_url=dict(type='str'),
access=dict(default='proxy', choices=['proxy', 'direct']),
database=dict(type='str', default=""),
diff --git a/plugins/modules/grafana_folder.py b/plugins/modules/grafana_folder.py
index 380a510c..4dcb8453 100644
--- a/plugins/modules/grafana_folder.py
+++ b/plugins/modules/grafana_folder.py
@@ -50,7 +50,7 @@
- This parameter can be useful if you enabled `hide_version` in grafana.ini
required: False
type: bool
- default: False
+ default: false
version_added: "1.2.0"
extends_documentation_fragment:
- community.grafana.basic_auth
diff --git a/plugins/modules/grafana_notification_channel.py b/plugins/modules/grafana_notification_channel.py
index eb808fa1..1913c290 100644
--- a/plugins/modules/grafana_notification_channel.py
+++ b/plugins/modules/grafana_notification_channel.py
@@ -82,17 +82,17 @@
- Required when I(state) is C(present).
is_default:
type: bool
- default: 'no'
+ default: false
description:
- Use this channel for all alerts.
include_image:
type: bool
- default: 'no'
+ default: false
description:
- Capture a visualization image and attach it to notifications.
disable_resolve_message:
type: bool
- default: 'no'
+ default: false
description:
- Disable the resolve message.
reminder_frequency:
diff --git a/plugins/modules/grafana_plugin.py b/plugins/modules/grafana_plugin.py
index 7fd41876..073de119 100644
--- a/plugins/modules/grafana_plugin.py
+++ b/plugins/modules/grafana_plugin.py
@@ -50,7 +50,7 @@
validate_certs:
description:
- Boolean variable to include --insecure while installing pluging
- default: False
+ default: false
type: bool
'''
diff --git a/plugins/modules/grafana_team.py b/plugins/modules/grafana_team.py
index 7f8de845..b7b2318d 100644
--- a/plugins/modules/grafana_team.py
+++ b/plugins/modules/grafana_team.py
@@ -59,7 +59,7 @@
description:
- Delete the members not found in the C(members) parameters from the
- list of members found on the Team.
- default: False
+ default: false
type: bool
skip_version_check:
description:
@@ -67,7 +67,7 @@
- This parameter can be useful if you enabled `hide_version` in grafana.ini
required: False
type: bool
- default: False
+ default: false
version_added: "1.2.0"
extends_documentation_fragment:
- community.grafana.basic_auth
@@ -104,7 +104,7 @@
members:
- john.doe@example.com
- jane.doe@example.com
- enforce_members: yes
+ enforce_members: true
state: present
- name: Delete a team
diff --git a/tests/integration/targets/grafana_datasource/tasks/tempo.yml b/tests/integration/targets/grafana_datasource/tasks/tempo.yml
new file mode 100644
index 00000000..5065a6ce
--- /dev/null
+++ b/tests/integration/targets/grafana_datasource/tasks/tempo.yml
@@ -0,0 +1,78 @@
+- name: Create tempo datasource
+ register: result
+ grafana_datasource:
+ name: datasource-tempo
+ grafana_url: "{{ grafana_url }}"
+ grafana_user: "{{ grafana_username }}"
+ grafana_password: "{{ grafana_password }}"
+ org_id: '1'
+ ds_type: tempo
+ ds_url: tempo.company.com:3100
+
+- debug:
+ var: result
+
+- assert:
+ that:
+ - result.changed
+ - "result.msg == 'Datasource datasource-tempo created'"
+
+- name: Check tempo datasource creation idempotency
+ register: result
+ grafana_datasource:
+ name: datasource-tempo
+ grafana_url: "{{ grafana_url }}"
+ grafana_user: "{{ grafana_username }}"
+ grafana_password: "{{ grafana_password }}"
+ org_id: '1'
+ ds_type: tempo
+ ds_url: tempo.company.com:3100
+
+- debug:
+ var: result
+
+- assert:
+ that:
+ - not result.changed
+ - result.datasource.basicAuth == false
+ - result.datasource.isDefault == false
+ - result.datasource.jsonData.tlsAuth == false
+ - result.datasource.jsonData.tlsAuthWithCACert == false
+ - result.datasource.secureJsonFields.httpHeaderValue1 == true
+ - result.datasource.name == 'datasource-tempo'
+ - result.datasource.orgId == 1
+ - result.datasource.type == 'tempo'
+ - result.datasource.url == 'tempo.company.com:3100'
+ - result.datasource.withCredentials == false
+
+- name: Delete tempo datasource
+ register: result
+ grafana_datasource:
+ name: datasource-tempo
+ grafana_url: "{{ grafana_url }}"
+ grafana_user: "{{ grafana_username }}"
+ grafana_password: "{{ grafana_password }}"
+ state: absent
+
+- debug:
+ var: result
+
+- assert:
+ that:
+ - result.changed
+
+- name: Delete tempo datasource
+ register: result
+ grafana_datasource:
+ name: datasource-tempo
+ grafana_url: "{{ grafana_url }}"
+ grafana_user: "{{ grafana_username }}"
+ grafana_password: "{{ grafana_password }}"
+ state: absent
+
+- debug:
+ var: result
+
+- assert:
+ that:
+ - not result.changed