2024-03-23 21:41:12 +00:00
|
|
|
---
|
2024-10-20 10:16:21 +00:00
|
|
|
- name: Stop container service
|
|
|
|
ansible.builtin.systemd:
|
|
|
|
name: container-grafana
|
|
|
|
state: stopped
|
|
|
|
become: true
|
|
|
|
register: result_grafana_systemd_stop
|
|
|
|
failed_when: "result_grafana_systemd_stop is failed and 'Could not find the requested service' not in result_grafana_systemd_stop.msg"
|
|
|
|
|
2024-10-20 13:40:09 +00:00
|
|
|
- name: Check if grafana container is running
|
2024-11-03 21:13:02 +00:00
|
|
|
command: 'podman ps -q --filter "name=^grafana$"'
|
2024-10-20 13:40:09 +00:00
|
|
|
changed_when: false
|
|
|
|
register: podman_ps
|
2024-10-20 10:16:21 +00:00
|
|
|
become: true
|
|
|
|
|
2024-10-20 13:40:09 +00:00
|
|
|
- name: Assert that no grafana container is running
|
2024-10-20 10:16:21 +00:00
|
|
|
ansible.builtin.assert:
|
|
|
|
that:
|
2024-10-20 13:40:09 +00:00
|
|
|
- podman_ps.stdout_lines | length == 0
|
2024-10-20 10:16:21 +00:00
|
|
|
|
2024-10-20 08:48:38 +00:00
|
|
|
- name: Check if restore from backup is already done
|
2024-03-30 11:03:53 +00:00
|
|
|
stat:
|
2024-10-20 08:48:38 +00:00
|
|
|
path: /mnt/volumes/restore_states/grafana_restored
|
|
|
|
register: grafana_restored_flag
|
2024-03-30 11:03:53 +00:00
|
|
|
|
2024-03-23 21:41:12 +00:00
|
|
|
- name: Create volumes directories
|
|
|
|
ansible.builtin.file:
|
|
|
|
path: "/mnt/volumes/{{ item }}"
|
|
|
|
state: directory
|
|
|
|
mode: '0755'
|
|
|
|
become: true
|
|
|
|
with_items:
|
|
|
|
- etc_grafana
|
|
|
|
- var_lib_grafana
|
|
|
|
- var_log_grafana
|
2024-10-20 08:48:38 +00:00
|
|
|
when: not grafana_restored_flag.stat.exists
|
2024-03-23 21:41:12 +00:00
|
|
|
|
|
|
|
- name: Create volumes data directories
|
|
|
|
ansible.builtin.file:
|
|
|
|
path: "/mnt/volumes/{{ item.name }}/data"
|
|
|
|
state: directory
|
|
|
|
owner: "{{ item.user }}"
|
|
|
|
group: "{{ item.user }}"
|
2024-03-24 14:03:21 +00:00
|
|
|
mode: '0755'
|
2024-03-23 21:41:12 +00:00
|
|
|
become: true
|
|
|
|
with_items:
|
|
|
|
- name: etc_grafana
|
|
|
|
user: root
|
|
|
|
- name: var_lib_grafana
|
|
|
|
user: 472
|
|
|
|
- name: var_log_grafana
|
|
|
|
user: 472
|
2024-10-20 08:48:38 +00:00
|
|
|
when: not grafana_restored_flag.stat.exists
|
2024-03-23 21:41:12 +00:00
|
|
|
|
|
|
|
- name: change ownership of duplicity working directories
|
|
|
|
ansible.builtin.file:
|
|
|
|
path: "{{ item }}"
|
|
|
|
owner: "{{ LINUX_USERNAME }}"
|
|
|
|
group: "{{ LINUX_USERNAME }}"
|
|
|
|
become: true
|
|
|
|
with_items:
|
|
|
|
- "{{ DUPLICITY_WORKDIR }}"
|
|
|
|
- "{{ DUPLICITY_ARCHIVE_DIR }}"
|
2024-10-20 08:48:38 +00:00
|
|
|
when: not grafana_restored_flag.stat.exists
|
2024-03-23 21:41:12 +00:00
|
|
|
|
|
|
|
- name: restore volume backup
|
|
|
|
ansible.builtin.command:
|
2024-04-28 09:51:05 +00:00
|
|
|
cmd: "duplicity restore --archive-dir {{ DUPLICITY_ARCHIVE_DIR }} --name {{ item }} swift://{{ item }} /mnt/volumes/{{ item }}/data"
|
2024-03-23 21:41:12 +00:00
|
|
|
environment:
|
|
|
|
SWIFT_USERNAME: "{{ OS_USERNAME }}"
|
|
|
|
SWIFT_PASSWORD: "{{ OS_PASSWORD }}"
|
|
|
|
SWIFT_AUTHURL: "{{ OS_AUTH_URL }}"
|
|
|
|
SWIFT_REGIONNAME: "{{ SWIFT_REGIONNAME }}"
|
|
|
|
SWIFT_TENANTNAME: "{{ OS_TENANT_NAME }}"
|
|
|
|
SWIFT_AUTHVERSION: "{{ OS_IDENTITY_API_VERSION }}"
|
2024-06-20 11:32:31 +00:00
|
|
|
PASSPHRASE: "{{ duplicity_passphrase }}"
|
2024-03-23 21:41:12 +00:00
|
|
|
# /usr/bin/duplicity uses "-s" python argument to prevent loading modules from user's python directory,
|
|
|
|
# this variable will override that.
|
|
|
|
PYTHONPATH: ".local/lib/python3.9/site-packages"
|
|
|
|
register: duplicity_result
|
2024-04-28 14:36:51 +00:00
|
|
|
become: true
|
2024-03-23 21:41:12 +00:00
|
|
|
with_items:
|
|
|
|
- etc_grafana
|
|
|
|
- var_lib_grafana
|
|
|
|
- var_log_grafana
|
|
|
|
failed_when: duplicity_result is failed and (duplicity_result.rc is not defined or duplicity_result.rc != 11)
|
|
|
|
changed_when: duplicity_result.rc is defined and duplicity_result.rc == 0
|
2024-10-20 08:48:38 +00:00
|
|
|
when: not grafana_restored_flag.stat.exists
|
2024-03-23 21:41:12 +00:00
|
|
|
|
|
|
|
- name: Create grafana container
|
|
|
|
containers.podman.podman_container:
|
|
|
|
name: grafana
|
|
|
|
image: docker.io/grafana/grafana:10.2.4
|
2024-10-19 15:59:09 +00:00
|
|
|
state: present
|
2024-03-23 21:41:12 +00:00
|
|
|
network:
|
2024-11-03 21:13:02 +00:00
|
|
|
- host
|
2024-11-03 21:36:22 +00:00
|
|
|
env:
|
|
|
|
GF_SERVER_HTTP_PORT: "3002"
|
2024-03-23 21:41:12 +00:00
|
|
|
volume:
|
|
|
|
- /mnt/volumes/var_lib_grafana/data:/var/lib/grafana:Z
|
|
|
|
- /mnt/volumes/etc_grafana/data:/etc/grafana:Z
|
|
|
|
- /mnt/volumes/var_log_grafana/data:/var/log/grafana:Z
|
2024-10-19 15:59:09 +00:00
|
|
|
generate_systemd:
|
|
|
|
path: /etc/systemd/system
|
|
|
|
become: true
|
|
|
|
|
|
|
|
- name: start/enable container service
|
|
|
|
ansible.builtin.systemd:
|
|
|
|
daemon-reload: true
|
|
|
|
name: container-grafana
|
|
|
|
state: started
|
|
|
|
enabled: true
|
2024-03-23 21:41:12 +00:00
|
|
|
become: true
|
|
|
|
|
2024-11-03 21:15:44 +00:00
|
|
|
- name: Add grafana.{{ DOMAIN }} to /etc/hosts
|
2024-03-23 21:41:12 +00:00
|
|
|
ansible.builtin.lineinfile:
|
|
|
|
path: "/etc/hosts"
|
2024-03-30 11:03:53 +00:00
|
|
|
line: "127.0.0.1 grafana.{{ DOMAIN }} grafana"
|
|
|
|
become: true
|
|
|
|
|
2024-10-20 08:48:38 +00:00
|
|
|
# A local volume is needed to store restore states
|
|
|
|
- name: Create /mnt/volumes/restore_states directory if it does not exist
|
2024-03-30 11:03:53 +00:00
|
|
|
ansible.builtin.file:
|
2024-10-20 08:48:38 +00:00
|
|
|
path: "/mnt/volumes/restore_states"
|
2024-03-30 11:03:53 +00:00
|
|
|
state: directory
|
|
|
|
mode: '0755'
|
|
|
|
become: true
|
2024-10-20 08:48:38 +00:00
|
|
|
when: not grafana_restored_flag.stat.exists
|
2024-03-30 11:03:53 +00:00
|
|
|
|
2024-10-20 08:48:38 +00:00
|
|
|
- name: Create grafana_restored state file
|
2024-03-30 11:03:53 +00:00
|
|
|
ansible.builtin.file:
|
2024-10-20 08:48:38 +00:00
|
|
|
path: "/mnt/volumes/restore_states/grafana_restored"
|
2024-03-30 11:03:53 +00:00
|
|
|
state: touch
|
|
|
|
mode: '0755'
|
2024-03-23 21:41:12 +00:00
|
|
|
become: true
|
2024-10-20 08:48:38 +00:00
|
|
|
when: not grafana_restored_flag.stat.exists
|