mirror of
				https://github.com/borgbase/ansible-role-borgbackup.git
				synced 2025-11-04 01:19:32 +01:00 
			
		
		
		
	reworked timer install logic
This commit is contained in:
		
							parent
							
								
									7414f85e39
								
							
						
					
					
						commit
						ea619be53f
					
				
							
								
								
									
										71
									
								
								tasks/noauto_create_cronjobs.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								tasks/noauto_create_cronjobs.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,71 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Add cron-job for borgmatic (large repo, create and check separate)
 | 
			
		||||
  when:
 | 
			
		||||
    - install_backup is not defined or install_backup
 | 
			
		||||
    - borgmatic_timer is defined and borgmatic_timer == "cron"
 | 
			
		||||
    - borgmatic_large_repo
 | 
			
		||||
  tags:
 | 
			
		||||
    - install_backup
 | 
			
		||||
  block:
 | 
			
		||||
    # I don't like to re-do the installation of packages here, but cron 
 | 
			
		||||
    # should not be one of the automatically installed packages since there
 | 
			
		||||
    # is systemd-timer as an alternative.
 | 
			
		||||
    - name: Install general dependencies (cron)
 | 
			
		||||
      ansible.builtin.package:
 | 
			
		||||
        name: "{{ borg_cron_package }}"
 | 
			
		||||
        state: present
 | 
			
		||||
 | 
			
		||||
    - name: Add cron job for regular create and prune
 | 
			
		||||
      cron:
 | 
			
		||||
        name: "{{ borgmatic_timer_cron_name }}"
 | 
			
		||||
        hour: "{{ borgmatic_timer_hour }}"
 | 
			
		||||
        minute: "{{ borgmatic_timer_minute }}"
 | 
			
		||||
        user: "{{ borgbackup_user }}"
 | 
			
		||||
        cron_file: "{{ borgmatic_timer_cron_name }}"
 | 
			
		||||
        job: "/usr/local/bin/borgmatic -C -p -c /etc/borgmatic/{{ borgmatic_config_name }}"
 | 
			
		||||
 | 
			
		||||
    - name: Add cron job for infrequent checks
 | 
			
		||||
      cron:
 | 
			
		||||
        name: "{{ borgmatic_timer_cron_name }}-check"
 | 
			
		||||
        day: "{{ borgmatic_timer_checks_day }}"
 | 
			
		||||
        hour: "{{ borgmatic_timer_checks_hour }}"
 | 
			
		||||
        minute: "{{ borgmatic_timer_checks_minute }}"
 | 
			
		||||
        user: "{{ borgbackup_user }}"
 | 
			
		||||
        cron_file: "{{ borgmatic_timer_cron_name }}"
 | 
			
		||||
        job: "/usr/local/bin/borgmatic -k -c /etc/borgmatic/{{ borgmatic_config_name }}"
 | 
			
		||||
 | 
			
		||||
- name: Add cron-job for borgmatic (normal-sized repo)
 | 
			
		||||
  when:
 | 
			
		||||
    - install_backup is not defined or install_backup
 | 
			
		||||
    - borgmatic_timer is defined and borgmatic_timer == "cron"
 | 
			
		||||
    - not borgmatic_large_repo
 | 
			
		||||
  tags:
 | 
			
		||||
    - install_backup
 | 
			
		||||
  block:
 | 
			
		||||
    - name: Add cron job for create, check and prune
 | 
			
		||||
      cron:
 | 
			
		||||
        name: "{{ borgmatic_timer_cron_name }}"
 | 
			
		||||
        hour: "{{ borgmatic_timer_hour }}"
 | 
			
		||||
        minute: "{{ borgmatic_timer_minute }}"
 | 
			
		||||
        user: "{{ borgbackup_user }}"
 | 
			
		||||
        cron_file: "{{ borgmatic_timer_cron_name }}"
 | 
			
		||||
        job: "/usr/local/bin/borgmatic -c /etc/borgmatic/{{ borgmatic_config_name }}"
 | 
			
		||||
 | 
			
		||||
    - name: Ensure separate check cron job is absent
 | 
			
		||||
      cron:
 | 
			
		||||
        name: "{{ borgmatic_timer_cron_name }}-check"
 | 
			
		||||
        state: absent
 | 
			
		||||
 | 
			
		||||
- name: Set PATH for borgmatic cron job.
 | 
			
		||||
  when:
 | 
			
		||||
    - install_backup is not defined or install_backup
 | 
			
		||||
    - borgmatic_timer is defined and borgmatic_timer == "cron"
 | 
			
		||||
  tags:
 | 
			
		||||
    - install_backup
 | 
			
		||||
  cron:
 | 
			
		||||
    user: "{{ borgbackup_user }}"
 | 
			
		||||
    cron_file: "{{ borgmatic_timer_cron_name }}"
 | 
			
		||||
    name: PATH
 | 
			
		||||
    env: yes
 | 
			
		||||
    value: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 | 
			
		||||
...
 | 
			
		||||
							
								
								
									
										90
									
								
								tasks/noauto_create_timer.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								tasks/noauto_create_timer.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,90 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Create borgbackup timer
 | 
			
		||||
  when:
 | 
			
		||||
    - install_backup is not defined or install_backup
 | 
			
		||||
    - borgmatic_timer is defined and borgmatic_timer == "systemd"
 | 
			
		||||
  tags:
 | 
			
		||||
    - install_backup
 | 
			
		||||
  block:
 | 
			
		||||
    - name: Add systemd.timer for borgmatic (large repo, create and check separate)
 | 
			
		||||
      when: borgmatic_large_repo
 | 
			
		||||
      block:
 | 
			
		||||
        - name: Copy systemd files
 | 
			
		||||
          ansible.builtin.template:
 | 
			
		||||
            src: "{{ item.src }}"
 | 
			
		||||
            dest: "{{ item.dest }}"
 | 
			
		||||
            owner: root
 | 
			
		||||
            group: root
 | 
			
		||||
            backup: true
 | 
			
		||||
            mode: "{{ item.mode }}"
 | 
			
		||||
          with_items:
 | 
			
		||||
            - { src: "backup_large_repo_check.timer.j2", dest: "/usr/lib/systemd/system/backup_large_repo_check.timer", mode: "0644" }
 | 
			
		||||
            - { src: "backup_large_repo_check.service.j2", dest: "/usr/lib/systemd/system/backup_large_repo_check.service", mode: "0644" }
 | 
			
		||||
            - { src: "backup_large_repo.timer.j2", dest: "/usr/lib/systemd/system/backup_large_repo.timer", mode: "0644" }
 | 
			
		||||
            - { src: "backup_large_repo.service.j2", dest: "/usr/lib/systemd/system/backup_large_repo.service", mode: "0644" }
 | 
			
		||||
 | 
			
		||||
        - name: Populate service facts (large repo, create and check separate)
 | 
			
		||||
          ansible.builtin.service_facts:
 | 
			
		||||
 | 
			
		||||
        - name: Restart borgmatic services (large repo, create and check separate)
 | 
			
		||||
          ansible.builtin.systemd:
 | 
			
		||||
            name: "{{ item }}"
 | 
			
		||||
            state: restarted
 | 
			
		||||
            enabled: true
 | 
			
		||||
            masked: false
 | 
			
		||||
            daemon_reload: true
 | 
			
		||||
          when: "item in services"
 | 
			
		||||
          with_items:
 | 
			
		||||
            - "backup_large_repo_check.service"
 | 
			
		||||
            - "backup_large_repo.service"
 | 
			
		||||
 | 
			
		||||
        # bug: Need own section without masked else the timer are skipped
 | 
			
		||||
        - name: Restart borgmatic timers (large repo, create and check separate)
 | 
			
		||||
          ansible.builtin.systemd:
 | 
			
		||||
            name: "{{ item }}"
 | 
			
		||||
            state: started
 | 
			
		||||
            enabled: true
 | 
			
		||||
            daemon_reload: true
 | 
			
		||||
          with_items:
 | 
			
		||||
            - "backup_large_repo_check.timer"
 | 
			
		||||
            - "backup_large_repo.timer"
 | 
			
		||||
 | 
			
		||||
    - name: Add systemd.timer for borgmatic (normal-sized repo)
 | 
			
		||||
      when: not borgmatic_large_repo
 | 
			
		||||
      block:
 | 
			
		||||
        - name: Copy systemd files (normal-sized repo)
 | 
			
		||||
          ansible.builtin.template:
 | 
			
		||||
            src: "{{ item.src }}"
 | 
			
		||||
            dest: "{{ item.dest }}"
 | 
			
		||||
            owner: root
 | 
			
		||||
            group: root
 | 
			
		||||
            backup: true
 | 
			
		||||
            mode: "{{ item.mode }}"
 | 
			
		||||
          with_items:
 | 
			
		||||
            - { src: "backup_normal_repo.timer.j2", dest: "/usr/lib/systemd/system/backup_normal_repo.timer", mode: "0644" }
 | 
			
		||||
            - { src: "backup_normal_repo.service.j2", dest: "/usr/lib/systemd/system/backup_normal_repo.service", mode: "0644" }
 | 
			
		||||
 | 
			
		||||
        - name: Populate service facts
 | 
			
		||||
          ansible.builtin.service_facts:
 | 
			
		||||
 | 
			
		||||
        - name: Restart borgmatic services (normal-sized repo)
 | 
			
		||||
          ansible.builtin.systemd:
 | 
			
		||||
            name: "{{ item }}"
 | 
			
		||||
            state: started
 | 
			
		||||
            enabled: true
 | 
			
		||||
            masked: false
 | 
			
		||||
            daemon_reload: true
 | 
			
		||||
          when: "item in services"
 | 
			
		||||
          with_items:
 | 
			
		||||
            - backup_normal_repo.service
 | 
			
		||||
        
 | 
			
		||||
        # bug: Need own section without masked else the timer ar skipped
 | 
			
		||||
        - name: Restart borgmatic timers (normal-sized repo)
 | 
			
		||||
          ansible.builtin.systemd:
 | 
			
		||||
            name: "{{ item }}"
 | 
			
		||||
            state: started
 | 
			
		||||
            enabled: true
 | 
			
		||||
            daemon_reload: true
 | 
			
		||||
          with_items:
 | 
			
		||||
            - "backup_normal_repo.timer"
 | 
			
		||||
...
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user