commit 268f86ef3826aec2c28392cf8a1ef19d67866974 Author: mathieu Date: Sun May 24 17:13:39 2026 +0200 feat: initial installation role for grafana diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a8b42eb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.retry diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e25b13 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# ansible-role-grafana + +Installs Grafana on Debian/Ubuntu (via apt.grafana.com) and RHEL/Fedora +(via rpm.grafana.com). Installs the OSS edition by default. + +## Requirements + +- Ansible >= 2.14 + +## Role Variables + +| Variable | Default | Description | +|---|---|---| +| `grafana_package` | `grafana` | Package name (`grafana` or `grafana-enterprise`) | +| `grafana_service_enabled` | `true` | Enable service at boot | +| `grafana_service_state` | `started` | Service state after installation | + +## Example Playbook + +```yaml +- hosts: servers + roles: + - role: ansible-role-grafana +``` + +## License + +MIT diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..74cbdbb --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,4 @@ +--- +grafana_package: grafana +grafana_service_enabled: true +grafana_service_state: started diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..ad414a4 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,17 @@ +--- +galaxy_info: + author: mathieu + description: Install Grafana on Debian and RedHat based distributions + license: MIT + min_ansible_version: "2.14" + platforms: + - name: Debian + versions: [bullseye, bookworm] + - name: Ubuntu + versions: [focal, jammy, noble] + - name: EL + versions: ["8", "9"] + - name: Fedora + versions: [all] + galaxy_tags: [grafana, monitoring, dashboards] +dependencies: [] diff --git a/tasks/debian.yml b/tasks/debian.yml new file mode 100644 index 0000000..c6aa9a8 --- /dev/null +++ b/tasks/debian.yml @@ -0,0 +1,50 @@ +--- +- name: Install Grafana prerequisites + ansible.builtin.apt: + name: + - apt-transport-https + - software-properties-common + - wget + state: present + update_cache: true + become: true + +- name: Create Grafana keyring directory + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: '0755' + become: true + +- name: Download Grafana GPG key + ansible.builtin.shell: + cmd: wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor -o /etc/apt/keyrings/grafana.gpg + creates: /etc/apt/keyrings/grafana.gpg + become: true + +- name: Set Grafana GPG key permissions + ansible.builtin.file: + path: /etc/apt/keyrings/grafana.gpg + mode: '0644' + become: true + +- name: Add Grafana apt repository + ansible.builtin.copy: + content: "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main\n" + dest: /etc/apt/sources.list.d/grafana.list + mode: '0644' + become: true + +- name: Install Grafana + ansible.builtin.apt: + name: "{{ grafana_package }}" + state: present + update_cache: true + become: true + +- name: Enable and start Grafana service + ansible.builtin.systemd: + name: grafana-server + enabled: "{{ grafana_service_enabled }}" + state: "{{ grafana_service_state }}" + become: true diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..45c0a09 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,9 @@ +--- +- name: Assert supported OS family + ansible.builtin.assert: + that: + - ansible_os_family in ['Debian', 'RedHat'] + fail_msg: "Unsupported OS family: {{ ansible_os_family }}" + +- name: Include OS-specific installation tasks + ansible.builtin.include_tasks: "{{ ansible_os_family | lower }}.yml" diff --git a/tasks/redhat.yml b/tasks/redhat.yml new file mode 100644 index 0000000..1f98c58 --- /dev/null +++ b/tasks/redhat.yml @@ -0,0 +1,29 @@ +--- +- name: Add Grafana yum repository + ansible.builtin.copy: + content: | + [grafana] + name=grafana + baseurl=https://rpm.grafana.com + repo_gpgcheck=1 + enabled=1 + gpgcheck=1 + gpgkey=https://rpm.grafana.com/gpg.key + sslverify=1 + sslcacert=/etc/pki/tls/certs/ca-bundle.crt + dest: /etc/yum.repos.d/grafana.repo + mode: '0644' + become: true + +- name: Install Grafana + ansible.builtin.dnf: + name: "{{ grafana_package }}" + state: present + become: true + +- name: Enable and start Grafana service + ansible.builtin.systemd: + name: grafana-server + enabled: "{{ grafana_service_enabled }}" + state: "{{ grafana_service_state }}" + become: true