{"id":13752647,"url":"https://github.com/cloudalchemy/ansible-grafana","last_synced_at":"2025-10-01T20:31:49.505Z","repository":{"id":41322419,"uuid":"112223013","full_name":"cloudalchemy/ansible-grafana","owner":"cloudalchemy","description":"Platform for analytics and monitoring","archived":true,"fork":false,"pushed_at":"2023-05-31T04:20:45.000Z","size":418,"stargazers_count":502,"open_issues_count":0,"forks_count":306,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-09-27T15:41:02.916Z","etag":null,"topics":["analytics","ansible","grafana","metrics-visualization","molecule","monitoring","tox"],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudalchemy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-11-27T16:53:19.000Z","updated_at":"2024-09-17T14:15:18.000Z","dependencies_parsed_at":"2024-01-08T07:59:58.144Z","dependency_job_id":null,"html_url":"https://github.com/cloudalchemy/ansible-grafana","commit_stats":null,"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudalchemy%2Fansible-grafana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudalchemy%2Fansible-grafana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudalchemy%2Fansible-grafana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudalchemy%2Fansible-grafana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudalchemy","download_url":"https://codeload.github.com/cloudalchemy/ansible-grafana/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234897368,"owners_count":18903646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","ansible","grafana","metrics-visualization","molecule","monitoring","tox"],"created_at":"2024-08-03T09:01:08.779Z","updated_at":"2025-10-01T20:31:44.212Z","avatar_url":"https://github.com/cloudalchemy.png","language":"Jinja","funding_links":[],"categories":["Jinja","monitoring"],"sub_categories":[],"readme":"# DEPRECATED\n\n**This role has been deprecated in favor of a the [grafana-ansible-collection](https://github.com/grafana/grafana-ansible-collection) collection.**\n\n\u003cp\u003e\u003cimg src=\"https://grafana.com/blog/assets/img/blog/timeshift/grafana_release_icon.png\" alt=\"grafana logo\" title=\"grafana\" align=\"right\" height=\"60\" /\u003e\u003c/p\u003e\n\n# Ansible Role: grafana\n\n[![Build Status](https://travis-ci.org/cloudalchemy/ansible-grafana.svg?branch=master)](https://travis-ci.org/cloudalchemy/ansible-grafana)\n[![License](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg)](https://opensource.org/licenses/MIT)\n[![Ansible Role](https://img.shields.io/badge/ansible%20role-cloudalchemy.grafana-blue.svg)](https://galaxy.ansible.com/cloudalchemy/grafana/)\n[![GitHub tag](https://img.shields.io/github/tag/cloudalchemy/ansible-grafana.svg)](https://github.com/cloudalchemy/ansible-grafana/tags)\n\nProvision and manage [grafana](https://github.com/grafana/grafana) - platform for analytics and monitoring\n\n## Requirements\n\n- Ansible \u003e= 2.7 (It might work on previous versions, but we cannot guarantee it)\n- libselinux-python on deployer host (only when deployer machine has SELinux)\n- grafana \u003e= 5.1 (for older grafana versions use this role in version 0.10.1 or earlier)\n- jmespath on deployer machine. If you are using Ansible from a Python virtualenv, install *jmespath* to the same virtualenv via pip.\n\n## Role Variables\n\nAll variables which can be overridden are stored in [defaults/main.yml](defaults/main.yml) file as well as in table below.\n\n| Name           | Default Value | Description                        |\n| -------------- | ------------- | -----------------------------------|\n| `grafana_use_provisioning` | true | Use Grafana provisioning capability when possible (**grafana_version=latest will assume \u003e= 5.0**). |\n| `grafana_provisioning_synced` | false | Ensure no previously provisioned dashboards are kept if not referenced anymore. |\n| `grafana_version` | latest | Grafana package version |\n| `grafana_yum_repo_template` | etc/yum.repos.d/grafana.repo.j2 | Yum template to use |\n| `grafana_manage_repo` | true | Manage package repo (or don't) |\n| `grafana_instance` | {{ ansible_fqdn \\| default(ansible_host) \\| default(inventory_hostname) }} | Grafana instance name |\n| `grafana_logs_dir` | /var/log/grafana | Path to logs directory |\n| `grafana_data_dir` | /var/lib/grafana | Path to database directory |\n| `grafana_address` | 0.0.0.0 | Address on which grafana listens |\n| `grafana_port` | 3000 | port on which grafana listens |\n| `grafana_cap_net_bind_service` | false | Enables the use of ports below 1024 without root privileges by leveraging the 'capabilities' of the linux kernel. read: http://man7.org/linux/man-pages/man7/capabilities.7.html |\n| `grafana_url` | \"http://{{ grafana_address }}:{{ grafana_port }}\" | Full URL used to access Grafana from a web browser |\n| `grafana_api_url` | \"{{ grafana_url }}\" | URL used for API calls in provisioning if different from public URL. See [this issue](https://github.com/cloudalchemy/ansible-grafana/issues/70). |\n| `grafana_domain` | \"{{ ansible_fqdn \\| default(ansible_host) \\| default('localhost') }}\" | setting is only used in as a part of the `root_url` option. Useful when using GitHub or Google OAuth |\n| `grafana_server` | { protocol: http, enforce_domain: false, socket: \"\", cert_key: \"\", cert_file: \"\", enable_gzip: false, static_root_path: public, router_logging: false } | [server](http://docs.grafana.org/installation/configuration/#server) configuration section |\n| `grafana_security` | { admin_user: admin, admin_password: \"\" } | [security](http://docs.grafana.org/installation/configuration/#security) configuration section |\n| `grafana_database` | { type: sqlite3 } | [database](http://docs.grafana.org/installation/configuration/#database) configuration section |\n| `grafana_welcome_email_on_sign_up` | false | Send welcome email after signing up |\n| `grafana_users` | { allow_sign_up: false, auto_assign_org_role: Viewer, default_theme: dark } | [users](http://docs.grafana.org/installation/configuration/#users) configuration section |\n| `grafana_auth` | {} | [authorization](http://docs.grafana.org/installation/configuration/#auth) configuration section |\n| `grafana_ldap` | {} | [ldap](http://docs.grafana.org/installation/ldap/) configuration section. group_mappings are expanded, see defaults for example |\n| `grafana_session` | {} | [session](http://docs.grafana.org/installation/configuration/#session) management configuration section |\n| `grafana_analytics` | {} | Google [analytics](http://docs.grafana.org/installation/configuration/#analytics) configuration section |\n| `grafana_smtp` | {} | [smtp](http://docs.grafana.org/installation/configuration/#smtp) configuration section |\n| `grafana_alerting` | {} | [alerting](http://docs.grafana.org/installation/configuration/#alerting) configuration section |\n| `grafana_log` | {} | [log](http://docs.grafana.org/installation/configuration/#log) configuration section |\n| `grafana_metrics` | {} | [metrics](http://docs.grafana.org/installation/configuration/#metrics) configuration section |\n| `grafana_tracing` | {} | [tracing](http://docs.grafana.org/installation/configuration/#tracing) configuration section |\n| `grafana_snapshots` | {} | [snapshots](http://docs.grafana.org/installation/configuration/#snapshots) configuration section |\n| `grafana_image_storage` | {} | [image storage](http://docs.grafana.org/installation/configuration/#external-image-storage) configuration section |\n| `grafana_dashboards` | [] | List of dashboards which should be imported |\n| `grafana_dashboards_dir` | \"dashboards\" | Path to a local directory containing dashboards files in `json` format |\n| `grafana_datasources` | [] | List of datasources which should be configured |\n| `grafana_environment` | {} | Optional Environment param for Grafana installation, useful ie for setting http_proxy |\n| `grafana_plugins` | [] |  List of Grafana plugins which should be installed |\n| `grafana_alert_notifications` | [] | List of alert notification channels to be created, updated, or deleted |\n\nDatasource example:\n\n```yaml\ngrafana_datasources:\n  - name: prometheus\n    type: prometheus\n    access: proxy\n    url: 'http://{{ prometheus_web_listen_address }}'\n    basicAuth: false\n```\n\nDashboard example:\n\n```yaml\ngrafana_dashboards:\n  - dashboard_id: 111\n    revision_id: 1\n    datasource: prometheus\n```\n\nAlert notification channel example:\n\n**NOTE**: setting the variable `grafana_alert_notifications` will only come into\neffect when `grafana_use_provisioning` is `true`. That means the new\nprovisioning system using config files, which is available starting from Grafana\nv5.0, needs to be in use.\n\n```yaml\ngrafana_alert_notifications:\n  notifiers:\n    - name: Channel 1\n      type: email\n      uid: channel1\n      is_default: false\n      send_reminder: false\n      settings:\n        addresses: \"example@example.com\"\n        autoResolve: true\n  delete_notifiers:\n    - name: Channel 2\n      uid: channel2\n```\n\nUse a custom Grafana Yum repo template example:\n\n- Put your template next to your playbook under `templates` folder\n\n- Use a different path than the default one, because ansible , when using relative path, use the first template found and look under the role directory at first then the playbook directory.\n\n- The template expansion will be put under  `/etc/yum.repos.d/` , and will have as a name, the `basename` of the template path without the .j2\n\n  Example:\n\n  ```yaml\n  grafana_yum_repo_template: my_yum_repos/grafana.repo.j2\n\n  # [playbook_dir]/templates/my_yum_repos/grafana.repo.j2\n  # will be put under\n  # /etc/yum.repos.d/grafana.repo\n  # on the remote host\n  ```\n\n## Supported CPU Architectures\n\nHistorically packages were taken from different channels according to CPU architecture. Specifically, armv6/armv7 and aarch64/arm64 packages were via [unofficial packages distributed by fg2it](https://github.com/fg2it/grafana-on-raspberry). Now that Grafana publishes official ARM builds, all packages are taken from the official [Debian/Ubuntu](http://docs.grafana.org/installation/debian/#installing-on-debian-ubuntu) or [RPM](http://docs.grafana.org/installation/rpm/) packages.\n\n## Example\n\n### Playbook\n\nFill in the admin password field with your choice, the Grafana web page won't ask to change it at the first login.\n\n```yaml\n- hosts: all\n  roles:\n    - role: cloudalchemy.grafana\n      vars:\n        grafana_security:\n          admin_user: admin\n          admin_password: enter_your_secure_password\n```\n\n### Demo site\n\nWe provide demo site for full monitoring solution based on prometheus and grafana. Repository with code and links to running instances is [available on github](https://github.com/cloudalchemy/demo-site) and site is hosted on [DigitalOcean](https://digitalocean.com).\n\n## Local Testing\n\nThe preferred way of locally testing the role is to use Docker and [molecule](https://github.com/metacloud/molecule) (v2.x). You will have to install Docker on your system. See \"Get started\" for a Docker package suitable to for your system.\nWe are using tox to simplify process of testing on multiple ansible versions. To install tox execute:\n```sh\npip3 install tox\n```\nTo run tests on all ansible versions (WARNING: this can take some time)\n```sh\ntox\n```\nTo run a custom molecule command on custom environment with only default test scenario:\n```sh\ntox -e py35-ansible28 -- molecule test -s default\n```\nFor more information about molecule go to their [docs](http://molecule.readthedocs.io/en/latest/).\n\nIf you would like to run tests on remote docker host just specify `DOCKER_HOST` variable before running tox tests.\n\n## Travis CI\n\nCombining molecule and travis CI allows us to test how new PRs will behave when used with multiple ansible versions and multiple operating systems. This also allows use to create test scenarios for different role configurations. As a result we have a quite large test matrix which will take more time than local testing, so please be patient.\n\n## Contributing\n\nSee [contributor guideline](CONTRIBUTING.md).\n\n## Troubleshooting\n\nSee [troubleshooting](TROUBLESHOOTING.md).\n\n## License\n\nThis project is licensed under MIT License. See [LICENSE](/LICENSE) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudalchemy%2Fansible-grafana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudalchemy%2Fansible-grafana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudalchemy%2Fansible-grafana/lists"}