ovh_instance_playbooks/roles/role_deploy_grafana/tasks/main.yml

119 lines
3.6 KiB
YAML
Raw Normal View History

2024-03-23 21:41:12 +00:00
---
- name: Check if install from backup is already done
stat:
path: /mnt/volumes/install_states/grafana_installed
register: grafana_installed_flag
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
when: not grafana_installed_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
when: not grafana_installed_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 }}"
when: not grafana_installed_flag.stat.exists
2024-03-23 21:41:12 +00:00
- name: restore volume backup
ansible.builtin.command:
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 }}"
PASSPHRASE: "{{ DUPLICITY_PASSPHRASE}}"
# /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
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
when: not grafana_installed_flag.stat.exists
2024-03-23 21:41:12 +00:00
- name: Create podman networks
containers.podman.podman_network:
name: "{{ item }}"
become: true
with_items:
- reverse-proxy
- mysqlnet
when: not grafana_installed_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
network:
- reverse-proxy
- mysqlnet
expose:
- "3000/tcp"
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
become: true
when: not grafana_installed_flag.stat.exists
2024-03-23 21:41:12 +00:00
- name: Add cloud.{{ DOMAIN }} to /etc/hosts
ansible.builtin.lineinfile:
path: "/etc/hosts"
line: "127.0.0.1 grafana.{{ DOMAIN }} grafana"
become: true
when: not grafana_installed_flag.stat.exists
# A local volume is needed to store install states
- name: Create /mnt/volumes/install_states directory if it does not exist
ansible.builtin.file:
path: "/mnt/volumes/install_states"
state: directory
mode: '0755'
become: true
when: not grafana_installed_flag.stat.exists
- name: Create grafana_installed state file
ansible.builtin.file:
path: "/mnt/volumes/install_states/grafana_installed"
state: touch
mode: '0755'
2024-03-23 21:41:12 +00:00
become: true
when: not grafana_installed_flag.stat.exists