--- - name: create job config directory file: path: "{{ restic_etc_path }}/jobs/{{ item.name }}" owner: root group: root mode: 0755 state: directory - name: create job environment helper template: src: job-env.sh.j2 dest: "{{ restic_etc_path }}/jobs/{{ item.name }}/env.sh" owner: root group: root mode: 0400 - name: create hooks directory file: path: "{{ restic_etc_path }}/jobs/{{ item.name }}/hooks.d" owner: root group: root mode: 0755 state: directory when: item.hooks is defined and item.hooks | length - name: create job hooks copy: src: "hooks/{{ hook_item }}" dest: "{{ restic_etc_path }}/jobs/{{ item.name }}/hooks.d/{{ '%02d' | format(idx) }}-{{ hook_item | basename | splitext | first }}" owner: root group: root mode: 0755 loop: "{{ item.hooks | default([]) }}" loop_control: loop_var: hook_item index_var: idx when: item.hooks is defined - name: create job exclude file template: src: exclude.txt.j2 dest: "{{ restic_etc_path }}/jobs/{{ item.name }}/exclude.txt" owner: root group: root mode: 0644 - name: create cron cron: name: "restic {{ item.name }} job" hour: "{{ item.cron.hour | default(omit) }}" minute: "{{ item.cron.minute | default(60 | random(seed=inventory_hostname)) }}" day: "{{ item.cron.day | default(omit) }}" month: "{{ item.cron.month | default(omit) }}" weekday: "{{ item.cron.weekday | default(omit) }}" user: "{{ item.cron.user | default('root') }}" state: "{{ item.cron.state | default('present') }}" job: "( {{ restic_bin_path }}/restic-job {{ item.name }} | logger --id=$$ -t restic-job -p user.info ) 2>&1 | logger --id=$$ -t restic-job -p user.err"