mirror of
				https://gitea.0xace.cc/ansible-galaxy/wal-g-pg.git
				synced 2025-11-04 03:17:23 +00:00 
			
		
		
		
	first commit
This commit is contained in:
		
							
								
								
									
										53
									
								
								defaults/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								defaults/main.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					wal_g_version: "3.0.0"
 | 
				
			||||||
 | 
					wal_g_install_repo: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_pg: false
 | 
				
			||||||
 | 
					wal_g_pg_binary_name: "wal-g-pg"
 | 
				
			||||||
 | 
					wal_g_pg_user: "postgres"
 | 
				
			||||||
 | 
					wal_g_pg_database: "postgres"
 | 
				
			||||||
 | 
					wal_g_restore: false
 | 
				
			||||||
 | 
					wal_g_config_name: ".walg.json"
 | 
				
			||||||
 | 
					wal_g_restore_config_name: ".walg-restore.json"
 | 
				
			||||||
 | 
					wal_g_pg_config_owner: "postgres"
 | 
				
			||||||
 | 
					wal_g_pg_config_group: "postgres"
 | 
				
			||||||
 | 
					wal_g_pg_backup_owner: "postgres"
 | 
				
			||||||
 | 
					wal_g_pg_backup_group: "postgres"
 | 
				
			||||||
 | 
					wal_g_pg_major_version: "15"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_backup_enable: true
 | 
				
			||||||
 | 
					wal_g_backup_schedule: ""
 | 
				
			||||||
 | 
					wal_g_backup_retention_schedule: ""
 | 
				
			||||||
 | 
					wal_g_backup_retention_number: 7
 | 
				
			||||||
 | 
					wal_g_backup_permanent_schedule: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If backuping through proxy
 | 
				
			||||||
 | 
					#wal_g_http_proxy: ''
 | 
				
			||||||
 | 
					#wal_g_https_proxy: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_postgresql_supported_versions:
 | 
				
			||||||
 | 
					  - 13
 | 
				
			||||||
 | 
					  - 14
 | 
				
			||||||
 | 
					  - 15
 | 
				
			||||||
 | 
					  - 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_default_config:  # more options see https://github.com/wal-g/wal-g#configuration
 | 
				
			||||||
 | 
					#  AWS_ACCESS_KEY_ID: "secret-key"
 | 
				
			||||||
 | 
					#  AWS_SECRET_ACCESS_KEY: "access-key"
 | 
				
			||||||
 | 
					#  AWS_ENDPOINT: "https://s3.example.com"
 | 
				
			||||||
 | 
					#  WALG_S3_PREFIX: "s3://bucket"
 | 
				
			||||||
 | 
					#  AWS_S3_FORCE_PATH_STYLE: "true"
 | 
				
			||||||
 | 
					  WALG_COMPRESSION_METHOD: "brotli"
 | 
				
			||||||
 | 
					  PGDATA: "{{ wal_g_pg_data_dir }}"
 | 
				
			||||||
 | 
					  PGHOST: "/var/run/postgresql"
 | 
				
			||||||
 | 
					  PGUSER: "{{ wal_g_pg_user }}"
 | 
				
			||||||
 | 
					  PGDATABASE: "{{ wal_g_pg_database }}"
 | 
				
			||||||
 | 
					#  WALG_LIBSODIUM_KEY: "d82560ddab2b096c56ea8c6573dfdf29de8cd6f2bb5e672d1d3b5a89749b8cbd"
 | 
				
			||||||
 | 
					  WALG_LIBSODIUM_KEY_TRANSFORM: "hex"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_default_restore_config:  
 | 
				
			||||||
 | 
					  WALG_COMPRESSION_METHOD: "brotli"
 | 
				
			||||||
 | 
					  PGDATA: "{{ wal_g_pg_data_dir }}"
 | 
				
			||||||
 | 
					  PGHOST: "/var/run/postgresql"
 | 
				
			||||||
 | 
					  PGUSER: "{{ wal_g_pg_user }}"
 | 
				
			||||||
 | 
					  PGDATABASE: "{{ wal_g_pg_database }}"
 | 
				
			||||||
 | 
					  WALG_LIBSODIUM_KEY_TRANSFORM: "hex"
 | 
				
			||||||
							
								
								
									
										50
									
								
								handlers/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								handlers/main.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					- name: Daemon reload backup service
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup.service
 | 
				
			||||||
 | 
					    enabled: no
 | 
				
			||||||
 | 
					    masked : no
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: backup_service.changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Restart backup timer
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup.timer
 | 
				
			||||||
 | 
					    enabled: yes
 | 
				
			||||||
 | 
					    masked : no
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: backup_timer.changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Daemon reload backup retention service
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-retention.service
 | 
				
			||||||
 | 
					    enabled: no
 | 
				
			||||||
 | 
					    masked : no
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: backup_retention_service.changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Restart backup retention timer
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-retention.timer
 | 
				
			||||||
 | 
					    enabled: yes
 | 
				
			||||||
 | 
					    masked : no
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: backup_retention_timer.changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Daemon reload backup permanent service
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-permanent.service
 | 
				
			||||||
 | 
					    enabled: no
 | 
				
			||||||
 | 
					    masked : no
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: backup_permanent_service.changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Restart backup permanent timer
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-permanent.timer
 | 
				
			||||||
 | 
					    enabled: yes
 | 
				
			||||||
 | 
					    masked : no
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: backup_permanent_timer.changed
 | 
				
			||||||
							
								
								
									
										7
									
								
								meta/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								meta/main.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					galaxy_info:
 | 
				
			||||||
 | 
					  description: WAL-G backup util
 | 
				
			||||||
 | 
					  galaxy_tags:
 | 
				
			||||||
 | 
					  - wal-g
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies: []
 | 
				
			||||||
							
								
								
									
										22
									
								
								tasks/backup_job.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								tasks/backup_job.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					- name: Template backup script
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup.sh.j2
 | 
				
			||||||
 | 
					    dest: "{{ wal_g_pg_home_dir }}/backup.sh"
 | 
				
			||||||
 | 
					    mode: 0755
 | 
				
			||||||
 | 
					    owner: "{{ wal_g_pg_backup_owner }}"
 | 
				
			||||||
 | 
					    group: "{{ wal_g_pg_backup_group }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Template systemd backup service
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup.service.j2
 | 
				
			||||||
 | 
					    dest: /etc/systemd/system/backup.service
 | 
				
			||||||
 | 
					  notify: Daemon reload backup service
 | 
				
			||||||
 | 
					  register: backup_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Reload systemd backup service
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup.service
 | 
				
			||||||
 | 
					    enabled: no
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: not backup_service.changed
 | 
				
			||||||
							
								
								
									
										15
									
								
								tasks/backup_job_timer.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tasks/backup_job_timer.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					- name: Template systemd backup timer
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup.timer.j2
 | 
				
			||||||
 | 
					    dest: /etc/systemd/system/backup.timer
 | 
				
			||||||
 | 
					  notify: Restart backup timer
 | 
				
			||||||
 | 
					  register: backup_timer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Enable and start systemd backup timer
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup.timer
 | 
				
			||||||
 | 
					    enabled: "{{ 'yes' if wal_g_backup_enable else 'no' }}"
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: not backup_timer.changed
 | 
				
			||||||
							
								
								
									
										22
									
								
								tasks/backup_permanent_job.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								tasks/backup_permanent_job.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					- name: Template backup permanent script
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup-permanent.sh.j2
 | 
				
			||||||
 | 
					    dest: "{{ wal_g_pg_home_dir }}/backup-permanent.sh"
 | 
				
			||||||
 | 
					    mode: 0755
 | 
				
			||||||
 | 
					    owner: "{{ wal_g_pg_backup_owner }}"
 | 
				
			||||||
 | 
					    group: "{{ wal_g_pg_backup_group }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Template systemd backup permanent service
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup-permanent.service.j2
 | 
				
			||||||
 | 
					    dest: /etc/systemd/system/backup-permanent.service
 | 
				
			||||||
 | 
					  notify: Daemon reload backup permanent service
 | 
				
			||||||
 | 
					  register: backup_permanent_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Reload systemd backup permanent service
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-permanent.service
 | 
				
			||||||
 | 
					    enabled: no
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: not backup_permanent_service.changed
 | 
				
			||||||
							
								
								
									
										15
									
								
								tasks/backup_permanent_job_timer.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tasks/backup_permanent_job_timer.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					- name: Template systemd backup permanent timer
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup-permanent.timer.j2
 | 
				
			||||||
 | 
					    dest: /etc/systemd/system/backup-permanent.timer
 | 
				
			||||||
 | 
					  notify: Restart backup permanent timer
 | 
				
			||||||
 | 
					  register: backup_permanent_timer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Enable and start systemd backup permanent timer
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-permanent.timer
 | 
				
			||||||
 | 
					    enabled: "{{ 'yes' if wal_g_backup_enable else 'no' }}"
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: not backup_permanent_timer.changed
 | 
				
			||||||
							
								
								
									
										23
									
								
								tasks/backup_retention_job.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tasks/backup_retention_job.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					- name: Template backup retention script
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup-retention.sh.j2
 | 
				
			||||||
 | 
					    dest: "{{ wal_g_pg_home_dir }}/backup-retention.sh"
 | 
				
			||||||
 | 
					    mode: 0755
 | 
				
			||||||
 | 
					    owner: "{{ wal_g_pg_backup_owner }}"
 | 
				
			||||||
 | 
					    group: "{{ wal_g_pg_backup_group }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Template systemd backup retention service
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup-retention.service.j2
 | 
				
			||||||
 | 
					    dest: /etc/systemd/system/backup-retention.service
 | 
				
			||||||
 | 
					  notify: Daemon reload backup retention service
 | 
				
			||||||
 | 
					  register: backup_retention_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Reload systemd backup retention service
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-retention.service
 | 
				
			||||||
 | 
					    enabled: no
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: not backup_retention_service.changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								tasks/backup_retention_job_timer.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tasks/backup_retention_job_timer.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					- name: Template systemd backup retention timer
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: backup-retention.timer.j2
 | 
				
			||||||
 | 
					    dest: /etc/systemd/system/backup-retention.timer
 | 
				
			||||||
 | 
					  notify: Restart backup retention timer
 | 
				
			||||||
 | 
					  register: backup_retention_timer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Enable and start systemd backup retention timer
 | 
				
			||||||
 | 
					  systemd:
 | 
				
			||||||
 | 
					    name: backup-retention.timer
 | 
				
			||||||
 | 
					    enabled: "{{ 'yes' if wal_g_backup_enable else 'no' }}"
 | 
				
			||||||
 | 
					    masked: no
 | 
				
			||||||
 | 
					    state: started
 | 
				
			||||||
 | 
					    daemon_reload: yes
 | 
				
			||||||
 | 
					  when: not backup_retention_timer.changed
 | 
				
			||||||
							
								
								
									
										56
									
								
								tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Load a variable file based on the OS type
 | 
				
			||||||
 | 
					  include_vars: "{{ lookup('first_found', params) }}"
 | 
				
			||||||
 | 
					  vars:
 | 
				
			||||||
 | 
					    params:
 | 
				
			||||||
 | 
					      files:
 | 
				
			||||||
 | 
					        - "{{ ansible_facts['distribution'] }}.yaml"
 | 
				
			||||||
 | 
					        - "{{ ansible_facts['os_family'] }}.yaml"
 | 
				
			||||||
 | 
					      paths:
 | 
				
			||||||
 | 
					        - "vars"
 | 
				
			||||||
 | 
					  tags: wal_g_vars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Set facts about needed vars
 | 
				
			||||||
 | 
					  set_fact:
 | 
				
			||||||
 | 
					    wal_g_pg_home_dir: "{{ wal_g_pg_home_dir }}"
 | 
				
			||||||
 | 
					    wal_g_pg_data_dir: "{{ wal_g_pg_data_dir }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include install WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: pg.yaml
 | 
				
			||||||
 | 
					  when: wal_g_pg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include backup job with WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: backup_job.yaml
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    - wal_g_pg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include backup job timer with WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: backup_job_timer.yaml
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    - wal_g_pg
 | 
				
			||||||
 | 
					    - wal_g_backup_schedule is defined
 | 
				
			||||||
 | 
					    - wal_g_backup_schedule | length > 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include backup retention job with WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: backup_retention_job.yaml
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    - wal_g_pg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include backup retention job timer with WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: backup_retention_job_timer.yaml
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    - wal_g_pg
 | 
				
			||||||
 | 
					    - wal_g_backup_retention_schedule is defined
 | 
				
			||||||
 | 
					    - wal_g_backup_retention_schedule | length > 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include permanent backup job with WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: backup_permanent_job.yaml
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    - wal_g_pg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Include permanent backup job timer with WAL-G {{ wal_g_version }} for PostgreSQL"
 | 
				
			||||||
 | 
					  include_tasks: backup_permanent_job_timer.yaml
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    - wal_g_pg
 | 
				
			||||||
 | 
					    - wal_g_backup_permanent_schedule is defined
 | 
				
			||||||
 | 
					    - wal_g_backup_permanent_schedule | length > 0
 | 
				
			||||||
							
								
								
									
										111
									
								
								tasks/pg.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								tasks/pg.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: RHEL based distros
 | 
				
			||||||
 | 
					  when: ansible_os_family == "RedHat"
 | 
				
			||||||
 | 
					  block:
 | 
				
			||||||
 | 
					    - name: Install WAL-G repository
 | 
				
			||||||
 | 
					      ansible.builtin.yum_repository:
 | 
				
			||||||
 | 
					        name: "{{ item.name }}"
 | 
				
			||||||
 | 
					        description: "{{ item.description }}"
 | 
				
			||||||
 | 
					        file: "{{ item.file }}"
 | 
				
			||||||
 | 
					        baseurl:  "{{ item.baseurl }}"
 | 
				
			||||||
 | 
					        gpgcheck: "{{ item.gpgcheck | default('no') }}"
 | 
				
			||||||
 | 
					        enabled: "{{ item.enabled | default('yes') }}"
 | 
				
			||||||
 | 
					        repo_gpgcheck: "{{ item.repo_gpgcheck | default('no') }}"
 | 
				
			||||||
 | 
					        gpgkey: "{{ item.gpgkey | default(omit) }}"
 | 
				
			||||||
 | 
					      loop: "{{ wal_g_rpm_repository }}"
 | 
				
			||||||
 | 
					      when: wal_g_install_repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: "Install WAL-G {{ wal_g_version }}"
 | 
				
			||||||
 | 
					      dnf:
 | 
				
			||||||
 | 
					        name: "{{ wal_g_package }}"
 | 
				
			||||||
 | 
					        state: present
 | 
				
			||||||
 | 
					        update_cache: yes
 | 
				
			||||||
 | 
					        allow_downgrade: yes
 | 
				
			||||||
 | 
					      tags: wal-g, wal_g, wal_g_install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: "Install curl and jq"
 | 
				
			||||||
 | 
					      dnf:
 | 
				
			||||||
 | 
					        name:
 | 
				
			||||||
 | 
					          - curl
 | 
				
			||||||
 | 
					          - jq
 | 
				
			||||||
 | 
					        state: present
 | 
				
			||||||
 | 
					        update_cache: yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Debian based distros
 | 
				
			||||||
 | 
					  when: ansible_os_family == "Debian"
 | 
				
			||||||
 | 
					  block:
 | 
				
			||||||
 | 
					    - name: Install apt-transport-https
 | 
				
			||||||
 | 
					      apt:
 | 
				
			||||||
 | 
					        name: apt-transport-https
 | 
				
			||||||
 | 
					        state: present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Add WAL-G repository
 | 
				
			||||||
 | 
					      ansible.builtin.apt_repository:
 | 
				
			||||||
 | 
					        repo: "{{ item.repo }}"
 | 
				
			||||||
 | 
					        state: present
 | 
				
			||||||
 | 
					        filename: "{{ item.filename }}"
 | 
				
			||||||
 | 
					        update_cache: yes
 | 
				
			||||||
 | 
					      loop: "{{ wal_g_apt_repository }}"
 | 
				
			||||||
 | 
					      when: wal_g_install_repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: "Install WAL-G {{ wal_g_version }} and deps"
 | 
				
			||||||
 | 
					      apt:
 | 
				
			||||||
 | 
					        name:
 | 
				
			||||||
 | 
					          - "{{ wal_g_package }}"
 | 
				
			||||||
 | 
					          - libsodium23
 | 
				
			||||||
 | 
					          - liblzo2-2
 | 
				
			||||||
 | 
					        state: present
 | 
				
			||||||
 | 
					        update_cache: yes
 | 
				
			||||||
 | 
					        allow_downgrade: yes
 | 
				
			||||||
 | 
					      tags: wal-g, wal_g, wal_g_install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: "Install curl and jq"
 | 
				
			||||||
 | 
					      apt:
 | 
				
			||||||
 | 
					        name:
 | 
				
			||||||
 | 
					          - curl
 | 
				
			||||||
 | 
					          - jq
 | 
				
			||||||
 | 
					        state: present
 | 
				
			||||||
 | 
					        update_cache: yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Gather packages"
 | 
				
			||||||
 | 
					  package_facts:
 | 
				
			||||||
 | 
					    manager: auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Set fact about PostgreSQL package"
 | 
				
			||||||
 | 
					  set_fact:
 | 
				
			||||||
 | 
					    wal_g_postgresql_package: "{{ ansible_facts.packages | list | select('match', wal_g_postgresql_package_name_regex) | first }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: "Get PostgreSQL major version"
 | 
				
			||||||
 | 
					  set_fact:
 | 
				
			||||||
 | 
					    wal_g_pg_major_version: "{{ ansible_facts.packages[wal_g_postgresql_package][0]['version'] | split('.') | first }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Create wal-g config
 | 
				
			||||||
 | 
					  when: wal_g_config is defined
 | 
				
			||||||
 | 
					  block:
 | 
				
			||||||
 | 
					    - name: Merge user options for WAL-G part of config
 | 
				
			||||||
 | 
					      set_fact:
 | 
				
			||||||
 | 
					        wal_g_combined_config: "{{ wal_g_default_config | combine(wal_g_config|default({}), recursive=true) }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: "Generate conf file walg.json"
 | 
				
			||||||
 | 
					      copy:
 | 
				
			||||||
 | 
					        content: "{{ wal_g_combined_config | to_nice_json }}"
 | 
				
			||||||
 | 
					        dest: "{{ wal_g_pg_home_dir }}/{{ wal_g_config_name }}"
 | 
				
			||||||
 | 
					        owner: "{{ wal_g_pg_config_owner }}"
 | 
				
			||||||
 | 
					        group: "{{ wal_g_pg_config_group }}"
 | 
				
			||||||
 | 
					        mode: 0644
 | 
				
			||||||
 | 
					      tags: wal-g, wal_g, wal_g_conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Create wal-g restore config
 | 
				
			||||||
 | 
					  when: wal_g_restore_config is defined
 | 
				
			||||||
 | 
					  block:
 | 
				
			||||||
 | 
					    - name: Merge user options for WAL-G part of restore config
 | 
				
			||||||
 | 
					      set_fact:
 | 
				
			||||||
 | 
					        wal_g_restore_combined_config: "{{ wal_g_default_restore_config | combine(wal_g_restore_config|default({}), recursive=true) }}"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    - name: "Generate conf file walg-restore.json"
 | 
				
			||||||
 | 
					      copy:
 | 
				
			||||||
 | 
					        content: "{{ wal_g_restore_combined_config | to_nice_json }}"
 | 
				
			||||||
 | 
					        dest: "{{ wal_g_pg_home_dir }}/{{ wal_g_restore_config_name }}"
 | 
				
			||||||
 | 
					        owner: "{{ wal_g_pg_config_owner }}"
 | 
				
			||||||
 | 
					        group: "{{ wal_g_pg_config_group }}"
 | 
				
			||||||
 | 
					        mode: 0644
 | 
				
			||||||
							
								
								
									
										11
									
								
								templates/backup-permanent.service.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								templates/backup-permanent.service.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Permanent backup PostgreSQL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=oneshot
 | 
				
			||||||
 | 
					ExecStart=/bin/bash {{ wal_g_pg_home_dir }}/backup-permanent.sh
 | 
				
			||||||
 | 
					User={{ wal_g_pg_backup_owner }}
 | 
				
			||||||
 | 
					Group={{ wal_g_pg_backup_group }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
							
								
								
									
										13
									
								
								templates/backup-permanent.sh.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								templates/backup-permanent.sh.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					exec 200>/tmp/backup.lock
 | 
				
			||||||
 | 
					flock -x 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					role=$(curl -k -s http://127.0.0.1:8008 || curl -k -s https://127.0.0.1:8008 | jq '.role')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "${role}" == "\"master\"" ] || [ "${role}" == "" ]; then
 | 
				
			||||||
 | 
					  {% if wal_g_http_proxy is defined %}http_proxy={{ wal_g_http_proxy }} {% else %}{% endif %}{% if wal_g_https_proxy is defined %}https_proxy={{ wal_g_https_proxy }} {% elif wal_g_http_proxy is defined %}https_proxy={{ wal_g_http_proxy }}{% else %}{% endif %} {{ wal_g_pg_binary_name }} --config {{ wal_g_pg_home_dir }}/{{ wal_g_config_name }} backup-push {{ wal_g_pg_data_dir }} --full --permanent 2>&1 | tee -a /var/log/postgresql/backup-permanent.log
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  echo ""
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec 200>&-
 | 
				
			||||||
							
								
								
									
										9
									
								
								templates/backup-permanent.timer.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								templates/backup-permanent.timer.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Run PostgreSQL backup permanent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Timer]
 | 
				
			||||||
 | 
					Unit=backup-permanent.service
 | 
				
			||||||
 | 
					OnCalendar={{ wal_g_backup_permanent_schedule }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=timers.target
 | 
				
			||||||
							
								
								
									
										12
									
								
								templates/backup-retention.service.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								templates/backup-retention.service.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Backups retention for PostgreSQL
 | 
				
			||||||
 | 
					Wants=backup-retention.timer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=oneshot
 | 
				
			||||||
 | 
					ExecStart=/bin/bash {{ wal_g_pg_home_dir }}/backup-retention.sh
 | 
				
			||||||
 | 
					User={{ wal_g_pg_backup_owner }}
 | 
				
			||||||
 | 
					Group={{ wal_g_pg_backup_group }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
							
								
								
									
										12
									
								
								templates/backup-retention.sh.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								templates/backup-retention.sh.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					exec 200>/tmp/backup.lock
 | 
				
			||||||
 | 
					flock -x 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					role=$(curl -k -s http://127.0.0.1:8008 || curl -k -s https://127.0.0.1:8008 | jq '.role')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "${role}" == "\"master\"" ] || [ "${role}" == "" ]; then
 | 
				
			||||||
 | 
					  {% if wal_g_http_proxy is defined %}http_proxy={{ wal_g_http_proxy }} {% else %}{% endif %}{% if wal_g_https_proxy is defined %}https_proxy={{ wal_g_https_proxy }} {% elif wal_g_http_proxy is defined %}https_proxy={{ wal_g_http_proxy }}{% else %}{% endif %} {{ wal_g_pg_binary_name }} --config {{ wal_g_pg_home_dir }}/{{ wal_g_config_name }} delete retain {{ wal_g_backup_retention_number }} --confirm --use-sentinel-time 2>&1 | tee -a /var/log/postgresql/backup-retention.log
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  echo ""
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec 200>&-
 | 
				
			||||||
							
								
								
									
										9
									
								
								templates/backup-retention.timer.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								templates/backup-retention.timer.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Run PostgreSQL backup retention
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Timer]
 | 
				
			||||||
 | 
					Unit=backup-retention.service
 | 
				
			||||||
 | 
					OnCalendar={{ wal_g_backup_retention_schedule }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=timers.target
 | 
				
			||||||
							
								
								
									
										12
									
								
								templates/backup.service.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								templates/backup.service.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Backup PostgreSQL
 | 
				
			||||||
 | 
					Wants=backup.timer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=oneshot
 | 
				
			||||||
 | 
					ExecStart=/bin/bash {{ wal_g_pg_home_dir }}/backup.sh
 | 
				
			||||||
 | 
					User={{ wal_g_pg_backup_owner }}
 | 
				
			||||||
 | 
					Group={{ wal_g_pg_backup_group }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
							
								
								
									
										12
									
								
								templates/backup.sh.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								templates/backup.sh.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					exec 200>/tmp/backup.lock
 | 
				
			||||||
 | 
					flock -x 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					role=$(curl -k -s http://127.0.0.1:8008 || curl -k -s https://127.0.0.1:8008 | jq '.role')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "${role}" == "\"master\"" ] || [ "${role}" == "" ]; then
 | 
				
			||||||
 | 
					  {% if wal_g_http_proxy is defined %}http_proxy={{ wal_g_http_proxy }} {% else %}{% endif %}{% if wal_g_https_proxy is defined %}https_proxy={{ wal_g_https_proxy }} {% elif wal_g_http_proxy is defined %}https_proxy={{ wal_g_http_proxy }}{% else %}{% endif %} {{ wal_g_pg_binary_name }} --config {{ wal_g_pg_home_dir }}/{{ wal_g_config_name }} backup-push {{ wal_g_pg_data_dir }} --full 2>&1 | tee -a /var/log/postgresql/backup.log
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  echo ""
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec 200>&-
 | 
				
			||||||
							
								
								
									
										9
									
								
								templates/backup.timer.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								templates/backup.timer.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Run PostgreSQL backup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Timer]
 | 
				
			||||||
 | 
					Unit=backup.service
 | 
				
			||||||
 | 
					OnCalendar={{ wal_g_backup_schedule }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=timers.target
 | 
				
			||||||
							
								
								
									
										7
									
								
								templates/walg.json.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								templates/walg.json.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					{% for wal_g in wal_g_json %}
 | 
				
			||||||
 | 
					  "{{ wal_g.option }}": "{{ wal_g.value }}"{% if not loop.last %},
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					{% endfor %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										13
									
								
								vars/Debian.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vars/Debian.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					wal_g_apt_repository:
 | 
				
			||||||
 | 
					  - repo: deb [trusted=yes] https://mirror.0xace.cc/debian/custom/ default all
 | 
				
			||||||
 | 
					    filename: mirror.0xace.cc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_pg_home_dir: "/var/lib/postgresql"
 | 
				
			||||||
 | 
					wal_g_pg_data_dir: "{{ wal_g_pg_home_dir }}/{{ wal_g_pg_major_version }}/{{ wal_g_pg_cluster_name }}"
 | 
				
			||||||
 | 
					wal_g_pg_cluster_name: "main"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_postgresql_package_name_regex: 'postgresql-.[{{ wal_g_postgresql_supported_versions | join(",") }}]'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_package_name: "wal-g"
 | 
				
			||||||
 | 
					wal_g_package: "{{ wal_g_package_name }}={{ wal_g_version }}-{{ wal_g_version_build }}"
 | 
				
			||||||
 | 
					wal_g_version_build: "1"
 | 
				
			||||||
							
								
								
									
										14
									
								
								vars/RedHat.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vars/RedHat.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					wal_g_rpm_repository:
 | 
				
			||||||
 | 
					  - name: "mirror.0xace.cc"
 | 
				
			||||||
 | 
					    file: "mirror.0xace.cc"
 | 
				
			||||||
 | 
					    description: "0xace.cc repository"
 | 
				
			||||||
 | 
					    baseurl: "https://mirror.0xace.cc/rhel/$releasever/custom/"
 | 
				
			||||||
 | 
					    gpgcheck: no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_pg_home_dir: "/var/lib/pgsql"
 | 
				
			||||||
 | 
					wal_g_pg_data_dir: "{{ wal_g_pg_home_dir }}/{{ wal_g_pg_major_version }}/data"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_postgresql_package_name_regex: 'postgresql.[{{ wal_g_postgresql_supported_versions | join(",") }}]-server'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wal_g_package_name: "wal-g"
 | 
				
			||||||
 | 
					wal_g_package: "{{ wal_g_package_name }}-{{ wal_g_version }}"
 | 
				
			||||||
							
								
								
									
										0
									
								
								vars/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								vars/main.yaml
									
									
									
									
									
										Normal file
									
								
							
		Reference in New Issue
	
	Block a user