diff --git a/group_vars/stage_dev/postgres.yml b/group_vars/stage_dev/postgres.yml new file mode 100644 index 0000000..0e67d07 --- /dev/null +++ b/group_vars/stage_dev/postgres.yml @@ -0,0 +1,4 @@ +--- + +postgres_backup_volume_count: 2 +postgres_backup_volume_size: 10 diff --git a/roles/postgres/tasks/base-requirements_backup.yml b/roles/postgres/tasks/base-requirements_backup.yml deleted file mode 100644 index 273cf9a..0000000 --- a/roles/postgres/tasks/base-requirements_backup.yml +++ /dev/null @@ -1,63 +0,0 @@ ---- -- name: "Creating some hcloud volumes for backup purpose" - hcloud_volume: - api_token: "{{ hetzner_authentication_ansible }}" - name: "postgres-backup--{{ inventory_hostname }}--vol{{ item }}" - server: "{{ inventory_hostname }}" - labels: - stage: "{{ stage }}" - used_for: "{{ inventory_hostname }}" - size: "{{ postgres_backup_volume_size }}" - state: present - delete_protection: yes - loop: "{{ range(1, postgres_backup_volume_count+1) | list }}" - register: created_volume - delegate_to: localhost - become: false - -- name: "Getting all hcloud volumes for {{ inventory_hostname }}" - hcloud_volume_info: - api_token: "{{ hetzner_authentication_ansible }}" - label_selector: "stage={{ stage }},used_for={{ inventory_hostname }}" - register: hcloud_volumes_found - delegate_to: localhost - become: false - -- name: "Getting all hcloud volumes for {{ inventory_hostname }}" - debug: - msg: "{{ hcloud_volumes_found }}" - -- name: "Setting LVM related VARs" - set_fact: - pvs: "{{ hcloud_volumes_found.hcloud_volume_info | json_query(jmesquery) }}" - vg_name: vg.postgres_backup - lv_name: lv.postgres_backup - vars: - jmesquery: "[*].linux_device" - -- name: "Creating a volume group on top of all found hcloud volumes" - community.general.lvg: - vg: "{{ vg_name }}" - pvs: "{{ pvs }}" - pvresize: yes - register: create_vg - -- name: "Create logical volume" # noqa no-handler - community.general.lvol: - vg: "{{ vg_name }}" - lv: "{{ lv_name }}" - size: '100%FREE' - when: - - create_vg.changed - -- name: "Format volume" - filesystem: - fstype: ext4 - dev: "/dev/{{ vg_name }}/{{ lv_name }}" - -- name: "Mount created LVM volume" - mount: - path: "{{ backup_directory }}" - src: "/dev/{{ vg_name }}/{{ lv_name }}" - fstype: ext4 - state: mounted diff --git a/roles/postgres/tasks/main.yml b/roles/postgres/tasks/main.yml index 8c8c135..154bb20 100644 --- a/roles/postgres/tasks/main.yml +++ b/roles/postgres/tasks/main.yml @@ -23,8 +23,14 @@ when: server_type == "master" # Master requirements for postgres -- name: Include Base Backup Requirements - include_tasks: base-requirements_backup.yml +- name: Create/Resize LVM for Backup + include_role: + name: lvm_with_hetzner_volumes + vars: + lvm_with_hetzner_volumes__volprefix: "postgres-backup" + lvm_with_hetzner_volumes__volsize: "{{ postgres_backup_volume_size }}" + lvm_with_hetzner_volumes__volcount: "{{ postgres_backup_volume_count }}" + lvm_with_hetzner_volumes__mountpath: "{{ backup_directory}}" when: server_type == "master" args: apply: