|
|
|
|
@ -1,63 +1,71 @@
|
|
|
|
|
---
|
|
|
|
|
- name: Docker | Pull images
|
|
|
|
|
docker_image:
|
|
|
|
|
name: '{{item}}'
|
|
|
|
|
name: '{{ item }}'
|
|
|
|
|
source: pull
|
|
|
|
|
with_items:
|
|
|
|
|
- ubuntu
|
|
|
|
|
- busybox
|
|
|
|
|
- ubuntu
|
|
|
|
|
- busybox
|
|
|
|
|
|
|
|
|
|
- name: Docker Compose | Create a directory if it does not exist
|
|
|
|
|
file:
|
|
|
|
|
path: '{{directories.docker_compose_directory}}/{{item.name}}'
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: '{{ directories.docker_compose_directory }}/{{ item.name }}'
|
|
|
|
|
state: directory
|
|
|
|
|
mode: '0755'
|
|
|
|
|
with_items: '{{services}}'
|
|
|
|
|
with_items: '{{ services }}'
|
|
|
|
|
|
|
|
|
|
- name: Docker Compose | Template Docker Compose Files
|
|
|
|
|
template:
|
|
|
|
|
src: '{{item.name}}.j2'
|
|
|
|
|
dest: '{{directories.docker_compose_directory}}/{{item.name}}/docker-compose.yml'
|
|
|
|
|
with_items: '{{services}}'
|
|
|
|
|
ansible.builtin.template:
|
|
|
|
|
src: '{{ item.name }}.j2'
|
|
|
|
|
dest: '{{ directories.docker_compose_directory }}/{{ item.name }}/docker-compose.yml'
|
|
|
|
|
owner: root
|
|
|
|
|
group: root
|
|
|
|
|
mode: 0440
|
|
|
|
|
with_items: '{{ services }}'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Directories | Ensure required directories
|
|
|
|
|
file:
|
|
|
|
|
path: '{{item}}'
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: '{{ item }}'
|
|
|
|
|
state: directory
|
|
|
|
|
mode: '0755'
|
|
|
|
|
with_items:
|
|
|
|
|
- '{{dashy.config_directory}}'
|
|
|
|
|
- '{{olivetin.config_directory}}'
|
|
|
|
|
- '{{directories.backups_dir}}/.s3tmp'
|
|
|
|
|
- '{{ dashy.config_directory }}'
|
|
|
|
|
- '{{ olivetin.config_directory }}'
|
|
|
|
|
- '{{ directories.backups_dir }}/.s3tmp'
|
|
|
|
|
|
|
|
|
|
- name: Dashy | Config Files
|
|
|
|
|
copy:
|
|
|
|
|
src: '{{dashy.source_file}}'
|
|
|
|
|
dest: '{{dashy.config_directory}}/{{dashy.config_file}}'
|
|
|
|
|
ansible.builtin.copy:
|
|
|
|
|
src: '{{ dashy.source_file }}'
|
|
|
|
|
dest: '{{ dashy.config_directory }}/{{ dashy.config_file }}'
|
|
|
|
|
owner: root
|
|
|
|
|
group: root
|
|
|
|
|
mode: 0440
|
|
|
|
|
notify:
|
|
|
|
|
- restart-dashy
|
|
|
|
|
- restart-dashy
|
|
|
|
|
|
|
|
|
|
- name: Olivetin | Config Files
|
|
|
|
|
copy:
|
|
|
|
|
src: '{{olivetin.source_file}}'
|
|
|
|
|
dest: '{{olivetin.config_directory}}/{{olivetin.config_file}}'
|
|
|
|
|
ansible.builtin.copy:
|
|
|
|
|
src: '{{ olivetin.source_file }}'
|
|
|
|
|
dest: '{{ olivetin.config_directory }}/{{ olivetin.config_file }}'
|
|
|
|
|
owner: root
|
|
|
|
|
group: root
|
|
|
|
|
mode: 0440
|
|
|
|
|
notify:
|
|
|
|
|
- restart-olivetin
|
|
|
|
|
- restart-olivetin
|
|
|
|
|
|
|
|
|
|
- name: Install python dependencies (requests)
|
|
|
|
|
pip:
|
|
|
|
|
ansible.builtin.pip:
|
|
|
|
|
name: requests
|
|
|
|
|
|
|
|
|
|
- name: Docker | Find docker volumes
|
|
|
|
|
shell: docker volume ls -f name={{item.name}} --format '{{ '{{' }} .Name {{ '}}'}}'
|
|
|
|
|
with_items: '{{services}}'
|
|
|
|
|
ansible.builtin.shell: docker volume ls -f name={{ item.name }} --format '{{ '{{' }} .Name {{ '}}' }}'
|
|
|
|
|
with_items: '{{ services }}'
|
|
|
|
|
register: find_volumes
|
|
|
|
|
changed_when: false
|
|
|
|
|
|
|
|
|
|
- debug: msg="{{ find_volumes.results | map(attribute='stdout_lines') | list | flatten }}"
|
|
|
|
|
|
|
|
|
|
- name: Docker | Find volumes that need to be restored
|
|
|
|
|
script: scripts/find-volumes-to-restore.py
|
|
|
|
|
ansible.builtin.script: scripts/find-volumes-to-restore.py
|
|
|
|
|
environment:
|
|
|
|
|
EXISTING_VOLUMES: "{{ find_volumes.results | map(attribute='stdout_lines') | list | flatten }}"
|
|
|
|
|
SERVICES: '{{ services }}'
|
|
|
|
|
@ -67,17 +75,16 @@
|
|
|
|
|
register: python_output
|
|
|
|
|
changed_when: false
|
|
|
|
|
|
|
|
|
|
- debug: msg="{{ python_output.stdout_lines | list }}"
|
|
|
|
|
|
|
|
|
|
- set_fact:
|
|
|
|
|
restore_volumes: "{{ restore_volumes | default([]) + [{ 'volume_name': item}] }}"
|
|
|
|
|
- name: Build list of volumes to restore.
|
|
|
|
|
ansible.builtin.set_fact:
|
|
|
|
|
restore_volumes: "{{ restore_volumes | default([]) + [{'volume_name':item}] }}"
|
|
|
|
|
with_items: "{{ python_output.stdout_lines | list }}"
|
|
|
|
|
|
|
|
|
|
- name: Restore any missing volumes from S3
|
|
|
|
|
include_role:
|
|
|
|
|
ansible.builtin.include_role:
|
|
|
|
|
name: chatton.docker_backup.docker_s3_volume_restore
|
|
|
|
|
when: restore_volumes is defined
|
|
|
|
|
ignore_errors: true
|
|
|
|
|
# ignore_errors: true
|
|
|
|
|
vars:
|
|
|
|
|
docker_backup_restore_force: false
|
|
|
|
|
docker_backup_restore_latest_s3_key: true
|
|
|
|
|
|