UNPKG

@installdoc/ansible-gas-station

Version:

An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤

58 lines (52 loc) 2.1 kB
--- - name: Ensure git repository folder exists become: true file: path: "{{ project.folder }}" owner: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}" mode: 0740 state: directory - name: Check if git already exists stat: path: "{{ project.folder }}/.git" register: git_folder - name: Clone the repository if it does not already exist become: true become_user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}" git: depth: "1" dest: "{{ project.folder }}" repo: "{{ project.repo }}" version: master when: not git_folder.stat.exists - name: Restore containers if the repository was freshly cloned become: true become_user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}" command: docker-compose-backup restore args: chdir: "{{ project.folder }}" when: not git_folder.stat.exists - name: Backup containers if git repository was already present become: true become_user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}" command: docker-compose-backup backup args: chdir: "{{ project.folder }}" when: git_folder.stat.exists - name: Ensure backup cron-job is in place become: true cron: name: "{{ project.name }} Daily Backup Job" minute: "0" hour: "{{ git_docker_backup_time }}" user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}" job: | {%if (healthcheck_endpoint is defined) and (project.healthcheck_id is defined) %} curl -fsS -m 10 --retry 5 -o /dev/null https://{{ healthcheck_endpoint }}/ping/{{ project.healthcheck_id }}/start {% endif %} cd {{ project.folder }} m=$(docker-compose-backup backup 2>&1) {%if (healthcheck_endpoint is defined) and (project.healthcheck_id is defined) %} curl -fsS -m 10 --retry 5 --data-raw "$m" "https://{{ healthcheck_endpoint }}/ping/{{ project.healthcheck_id }}$([ $? -ne 0 ] && echo -n /fail)" {% endif %} cron_file: "{{ project.name | lower }}-backup-job"