Skip to content
Snippets Groups Projects
Commit 7a57adea authored by Baptiste DE RENZO's avatar Baptiste DE RENZO
Browse files

Update Mediavault playbook, refs #32050

parent b503abe7
No related branches found
No related tags found
No related merge requests found
Showing
with 99 additions and 202 deletions
---
# mediavault backup deployement
# used by mediavault/add_backup.yml
#mvt_base_dir: /backup
#mvt_backups:
# - name: self-etc
# source: "/etc"
# dest: "{{ mvt_base_dir }}/self-etc"
# - name: data
# source: /data
# dest: "{{ mvt_base_dir }}/data"
...
---
# mediavault backup deployement
# used by mediavault/add_backup.yml
#mvt_base_dir: /backup
#mvt_backups:
# - name: self-etc
# source: "/etc"
# dest: "{{ mvt_base_dir }}/self-etc"
# - name: data
# source: /data
# dest: "{{ mvt_base_dir }}/data"
...
......@@ -14,22 +14,8 @@ def test_rsync_is_installed(host):
assert p.is_installed
def test_rsync_time_backup_repo(host):
d = host.file("/usr/local/share/rsync-time-backup")
def test_rsync_tmbackup_is_installed(host):
r = host.file("/usr/bin/rsync_tmbackup")
assert d.exists
assert d.is_directory
assert r.exists
def test_rsync_time_backup_link(host):
s = host.file("/usr/local/sbin/rsync_tmbackup")
assert s.exists
assert s.is_symlink
def test_backup_dir(host):
d = host.file("/backup")
assert d.exists
assert d.is_directory
#!/usr/bin/env ansible-playbook
---
- name: MEDIAVAULT
hosts: mediavault
tags: mediavault
tasks:
- include_tasks: ressources/add_backup_task.yml
loop: "{{ mvt_backups }}"
...
---
- name: get {{ item.name }} backup information
stat: path={{ item.dest }}/backup.marker
register: backup_marker
- name: create {{ item.name }} backup
shell: mediavaultctl add --backup-name "{{ item.name }}" --source-folder "{{ item.source }}" --dest-folder "{{ item.dest }}"
when: not backup_marker.stat.exists
...
......@@ -33,7 +33,7 @@
- import_playbook: mediacache.yml
tags: mediacache
- import_playbook: mediavault.yml
- import_playbook: mediavault/deploy.yml
tags: vault
- import_playbook: mediaimport.yml
......
---
mv_packages:
- git
- rsync
mvt_packages:
- ubicast-mediavault
mv_repo_url: https://mirismanager.ubicast.eu/github.com/UbiCastTeam/rsync-time-backup
mv_repo_path: /usr/local/share/rsync-time-backup
mv_repo_update: false
mv_script_path: /usr/local/sbin/rsync_tmbackup
mv_mailer_enabled: true
mv_mailer_script_path: /usr/local/sbin/systemd-mailer
mv_mailer_from: "{{ ansible_fqdn }} <backup@{{ ansible_fqdn }}>"
mv_mailer_to: sysadmin+backup@ubicast.eu
mv_mailer_service_name: status-email-admin
mv_mailer_service_path: /etc/systemd/system/{{ mv_mailer_service_name }}@.service
mv_base_dir: /backup
# mv_backup defaults
mv_backup_name: self
mv_backup_timer_calendar: "*-*-* 22:00:00"
mv_rsync_flags: -D --numeric-ids --links --hard-links --one-file-system --itemize-changes --times --recursive --perms --owner --group --stats --human-readable --timeout 30
mv_retention_strategy: "1:1 30:0"
mv_src_dir: /etc
mv_dest_dir: "{{ mv_base_dir }}/{{ mv_backup_name }}"
mv_exclude_list_name: excluded_patterns
mv_exclude_list_items:
- "- .zfs/"
- "- *.log"
- "- *.pyc"
- "- *.swp"
- "- *.pid"
- "- *chunked_*/"
- "- __pycache__/"
- "- apt-cacher-ng/"
- "- */msinstance-disabled/"
- "- *.lock"
- "- .nfs*"
- "- *.m3u8"
- "- *.ts"
- "- msmonitor/storage-logs/"
# default backup list
mv_backup:
- name: "{{ mv_backup_name }}"
timer_calendar: "{{ mv_backup_timer_calendar }}"
rsync_flags: "{{ mv_rsync_flags }}"
retention_strategy: "{{ mv_retention_strategy }}"
src_host:
src_dir: "{{ mv_src_dir }}"
dest_host:
dest_dir: "{{ mv_dest_dir }}"
exclude_list_name: "{{ mv_exclude_list_name }}"
exclude_list_items: "{{ mv_exclude_list_items }}"
mvt_mailer_enabled: true
mvt_mailer_script_path: /usr/local/sbin/systemd-mailer
mvt_mailer_from: "{{ ansible_fqdn }} <backup@{{ ansible_fqdn }}>"
mvt_mailer_to: sysadmin+backup@ubicast.eu
mvt_mailer_service_name: status-email-admin
mvt_mailer_service_path: /etc/systemd/system/{{ mvt_mailer_service_name }}@.service
# firewall rules
mv_firewall_enabled: true
mv_ferm_rules_filename: vault
mv_ferm_input_rules: []
mv_ferm_output_rules:
mvt_firewall_enabled: true
mvt_ferm_rules_filename: vault
mvt_ferm_input_rules: []
mvt_ferm_output_rules:
- proto:
- tcp
dport:
- 22
mv_ferm_global_settings:
mvt_ferm_global_settings:
...
---
- name: systemd daemon reload
systemd:
daemon_reload: true
...
......@@ -2,3 +2,5 @@
dependencies:
- role: base
...
---
- name: create mailer script
when: mvt_mailer_enabled
template:
src: systemd-mailer-script.j2
dest: "{{ mvt_mailer_script_path }}"
mode: 0755
- name: create mailer service
when: mvt_mailer_enabled
notify: systemd daemon reload
template:
src: systemd-mailer-service.j2
dest: "{{ mvt_mailer_service_path }}"
...
......@@ -4,7 +4,7 @@
package:
force_apt_get: true
install_recommends: false
name: "{{ mv_packages }}"
name: "{{ mvt_packages }}"
state: present
- name: generate ssh keys pair
......@@ -14,102 +14,17 @@
ssh_key_type: ed25519
ssh_key_file: .ssh/id_ed25519
- name: clone repo
when: not ansible_check_mode
git:
repo: "{{ mv_repo_url }}"
dest: "{{ mv_repo_path }}"
update: "{{ mv_repo_update }}"
version: master
- name: symlink script
when: not ansible_check_mode
file:
src: "{{ mv_repo_path }}/rsync_tmbackup.sh"
path: "{{ mv_script_path }}"
state: link
- name: create mailer script
when: mv_mailer_enabled
template:
src: systemd-mailer-script.j2
dest: "{{ mv_mailer_script_path }}"
mode: 0755
- name: create mailer service
when: mv_mailer_enabled
notify: systemd daemon reload
template:
src: systemd-mailer-service.j2
dest: "{{ mv_mailer_service_path }}"
- name: check base directory exists
register: mv_base_dir_check
stat:
path: "{{ mv_base_dir }}"
- name: create backup base directory
when: not mv_base_dir_check.stat.exists
file:
path: "{{ mv_base_dir }}"
state: directory
- name: create exclude list file
loop: "{{ mv_backup }}"
copy:
dest: "{{ mv_base_dir }}/{{ item['exclude_list_name'] | default(mv_exclude_list_name) }}.txt"
content: |
{% for exclude_item in item['exclude_list_items'] | default(mv_exclude_list_items) %}
{{ exclude_item }}
{% endfor %}
- name: create backup destination directory
loop: "{{ mv_backup }}"
file:
path: "{{ item['dest_dir'] | default(mv_base_dir + '/' + item['name']) }}"
mode: 0750
state: directory
- name: create backup marker
loop: "{{ mv_backup }}"
file:
path: "{{ item['dest_dir'] | default(mv_base_dir + '/' + item['name']) }}/backup.marker"
access_time: preserve
modification_time: preserve
state: touch
- name: add backup service
notify: systemd daemon reload
loop: "{{ mv_backup }}"
template:
src: systemd-backup-service.j2
dest: /etc/systemd/system/backup-{{ item['name'] }}.service
- name: add backup timer
notify: systemd daemon reload
loop: "{{ mv_backup }}"
template:
src: systemd-backup-timer.j2
dest: /etc/systemd/system/backup-{{ item['name'] }}.timer
- name: enable backup timer
loop: "{{ mv_backup }}"
systemd:
name: backup-{{ item['name'] }}.timer
daemon_reload: true
enabled: true
masked: false
state: started
# MAILER
- include: mailer.yml
# FIREWALL
- name: firewall
when: mv_firewall_enabled
when: mvt_firewall_enabled
vars:
ferm_rules_filename: "{{ mv_ferm_rules_filename }}"
ferm_input_rules: "{{ mv_ferm_input_rules }}"
ferm_output_rules: "{{ mv_ferm_output_rules }}"
ferm_global_settings: "{{ mv_ferm_global_settings }}"
ferm_rules_filename: "{{ mvt_ferm_rules_filename }}"
ferm_input_rules: "{{ mvt_ferm_input_rules }}"
ferm_output_rules: "{{ mvt_ferm_output_rules }}"
ferm_global_settings: "{{ mvt_ferm_global_settings }}"
include_role:
name: ferm-configure
......
[Unit]
Description=backup-{{ item['name'] }}
{% if mv_mailer_enabled %}
OnFailure={{ mv_mailer_service_name }}@%n.service
{% endif %}
[Service]
Type=simple
ExecStart={{ mv_script_path }} \
--rsync-set-flags "{{ item['rsync_flags'] | d(mv_rsync_flags) }}" \
--strategy "{{ item['retention_strategy'] | d(mv_retention_strategy) }}" \
{% if item['src_host'] | d() %}{{ item['src_host'] }}:{% endif %}{{ item['src_dir'] | d(mv_src_dir) }} \
{% if item['dest_host'] | d() %}{{ item['dest_host'] }}:{% endif %}{{ item['dest_dir'] | d(mv_base_dir + '/' + item['name']) }} \
{{ mv_base_dir }}/{{ item['exclude_list_name'] | d(mv_exclude_list_name) }}.txt
[Unit]
Description=backup-{{ item['name'] }}-timer
[Timer]
OnCalendar={{ item['timer_calendar'] | d(mv_backup_timer_calendar) }}
[Install]
WantedBy=timers.target
......@@ -2,7 +2,7 @@
sendmail -t <<ERRMAIL
To: $1
From: {{ mv_mailer_from }}
From: {{ mvt_mailer_from }}
Subject: ({{ ansible_fqdn }}) $2 status
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
......
[Unit]
Description=status email for %i to {{ mv_mailer_to }}
Description=status email for %i to {{ mvt_mailer_to }}
[Service]
Type=oneshot
ExecStart={{ mv_mailer_script_path }} {{ mv_mailer_to }} %i
ExecStart={{ mvt_mailer_script_path }} {{ mvt_mailer_to }} %i
User=nobody
Group=systemd-journal
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment