|
1 | 1 | --- |
2 | 2 |
|
3 | | -- block: |
4 | | - - name: Update apt cache |
5 | | - apt: |
6 | | - update_cache: true |
7 | | - register: _pre_update_apt_cache |
8 | | - until: _pre_update_apt_cache is succeeded |
9 | | - when: |
10 | | - - ansible_pkg_mgr == "apt" |
11 | 3 |
|
12 | | - - name: Install dependencies |
13 | | - package: |
14 | | - name: "{{ grafana_dependencies }}" |
15 | | - state: present |
16 | | - register: _install_dep_packages |
17 | | - until: _install_dep_packages is succeeded |
18 | | - retries: 5 |
19 | | - delay: 2 |
| 4 | +- name: Install dependencies |
| 5 | + package: |
| 6 | + name: "{{ grafana_dependencies }}" |
| 7 | + state: present |
| 8 | + register: _install_dep_packages |
| 9 | + until: _install_dep_packages is succeeded |
| 10 | + retries: 5 |
| 11 | + delay: 2 |
20 | 12 |
|
21 | 13 | - name: Remove conflicting grafana packages |
22 | 14 | package: |
23 | 15 | name: grafana-data |
24 | 16 | state: absent |
25 | 17 | register: _old_grafana_pkgs |
26 | 18 |
|
27 | | -- name: Clean apt cache |
28 | | - command: apt clean |
29 | | - when: |
30 | | - - _old_grafana_pkgs is changed |
31 | | - - ansible_pkg_mgr == "apt" |
32 | | - |
33 | | -- name: Add Grafana repository file [RHEL/CentOS] |
| 19 | +- name: Add (disabled) Grafana repository file [RHEL/CentOS] |
34 | 20 | template: |
35 | 21 | src: "{{ grafana_yum_repo_template }}" |
36 | 22 | dest: "/etc/yum.repos.d/{{ grafana_yum_repo_template | basename | regex_replace('\\.j2$', '') }}" |
37 | 23 | force: true |
38 | 24 | backup: true |
39 | 25 | when: ansible_pkg_mgr in ['yum', 'dnf'] |
40 | 26 |
|
41 | | -- block: |
42 | | - - name: Import Grafana GPG signing key [Debian/Ubuntu] |
43 | | - apt_key: |
44 | | - url: "https://packages.grafana.com/gpg.key" |
45 | | - state: present |
46 | | - validate_certs: false |
47 | | - register: _add_apt_key |
48 | | - until: _add_apt_key is succeeded |
49 | | - retries: 5 |
50 | | - delay: 2 |
51 | | - |
52 | | - - name: Add Grafana repository [Debian/Ubuntu] |
53 | | - apt_repository: |
54 | | - repo: deb https://packages.grafana.com/oss/deb stable main |
55 | | - state: present |
56 | | - update_cache: true |
57 | | - register: _update_apt_cache |
58 | | - until: _update_apt_cache is succeeded |
59 | | - retries: 5 |
60 | | - delay: 2 |
61 | | - when: |
62 | | - - ansible_pkg_mgr == "apt" |
63 | | - environment: "{{ grafana_environment }}" |
64 | | - |
65 | | -- name: Install Grafana |
| 27 | +# Work around the fact the grafana repos are flaky: only enable them if actually required |
| 28 | +- name: Check whether Grafana is installed |
| 29 | + # Fails with message below if not installed as repo is disabled |
| 30 | + # Otherwise succeeds. No change in either case! |
66 | 31 | package: |
67 | 32 | name: "{{ grafana_package }}" |
68 | 33 | state: "{{ (grafana_version == 'latest') | ternary('latest', 'present') }}" |
| 34 | + check_mode: true |
| 35 | + register: _existing_install |
| 36 | + failed_when: |
| 37 | + - _existing_install.rc != 0 |
| 38 | + - "'No package grafana' not in _existing_install.failures[0]" |
| 39 | + |
| 40 | +- name: Install Grafana package |
| 41 | + ansible.builtin.dnf: |
| 42 | + name: "{{ grafana_package }}" |
| 43 | + state: "{{ (grafana_version == 'latest') | ternary('latest', 'present') }}" |
| 44 | + enablerepo: grafana |
| 45 | + when: "'No package grafana' in _existing_install.get('failures', [''])[0]" |
69 | 46 | register: _install_packages |
70 | 47 | until: _install_packages is succeeded |
71 | 48 | retries: 5 |
|
0 commit comments