Make sanoid more targeted
This commit is contained in:
parent
2cc62f57ec
commit
5b5e5fce4f
@ -0,0 +1,9 @@
|
||||
[rpool/var/lib/{{ ansible_hostname }}/data/pod-{{ service_name }}]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[hpool/backup/{{ ansible_hostname }}/data/pod-{{ service_name }}]
|
||||
use_template = backup
|
||||
recursive = yes
|
||||
process_children_only = yes
|
14
playbooks/filesystem/yggdrasil/etc/sanoid/sanoid-system.conf
Normal file
14
playbooks/filesystem/yggdrasil/etc/sanoid/sanoid-system.conf
Normal file
@ -0,0 +1,14 @@
|
||||
[bpool/BOOT]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[rpool/ROOT]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[rpool/home]
|
||||
use_template = production,home
|
||||
recursive = yes
|
||||
process_children_only = yes
|
@ -0,0 +1,37 @@
|
||||
[template_home]
|
||||
hourly = 0
|
||||
|
||||
[template_production]
|
||||
frequently = 0
|
||||
hourly = 36
|
||||
daily = 30
|
||||
monthly = 3
|
||||
yearly = 0
|
||||
autosnap = yes
|
||||
autoprune = yes
|
||||
|
||||
[template_backup]
|
||||
autoprune = yes
|
||||
frequently = 0
|
||||
hourly = 30
|
||||
daily = 90
|
||||
monthly = 12
|
||||
yearly = 0
|
||||
|
||||
### don't take new snapshots - snapshots on backup
|
||||
### datasets are replicated in from source, not
|
||||
### generated locally
|
||||
autosnap = no
|
||||
|
||||
### monitor hourlies and dailies, but don't warn or
|
||||
### crit until they're over 48h old, since replication
|
||||
### is typically daily only
|
||||
hourly_warn = 2880
|
||||
hourly_crit = 3600
|
||||
daily_warn = 48
|
||||
daily_crit = 60
|
||||
|
||||
[template_ignore]
|
||||
autoprune = no
|
||||
autosnap = no
|
||||
monitor = no
|
@ -1,136 +0,0 @@
|
||||
################################
|
||||
# This is a sanoid.conf file. #
|
||||
# It should go in /etc/sanoid. #
|
||||
################################
|
||||
|
||||
## name your backup modules with the path to their ZFS dataset - no leading slash.
|
||||
#[zpoolname/datasetname]
|
||||
# # pick one or more templates - they're defined (and editable) below. Comma separated, processed in order.
|
||||
# # in this example, template_demo's daily value overrides template_production's daily value.
|
||||
# use_template = production,demo
|
||||
#
|
||||
# # if you want to, you can override settings in the template directly inside module definitions like this.
|
||||
# # in this example, we override the template to only keep 12 hourly and 1 monthly snapshot for this dataset.
|
||||
# hourly = 12
|
||||
# monthly = 1
|
||||
#
|
||||
## you can also handle datasets recursively.
|
||||
#[zpoolname/parent]
|
||||
# use_template = production
|
||||
# recursive = yes
|
||||
# # if you want sanoid to manage the child datasets but leave this one alone, set process_children_only.
|
||||
# process_children_only = yes
|
||||
#
|
||||
## you can selectively override settings for child datasets which already fall under a recursive definition.
|
||||
#[zpoolname/parent/child]
|
||||
# # child datasets already initialized won't be wiped out, so if you use a new template, it will
|
||||
# # only override the values already set by the parent template, not replace it completely.
|
||||
# use_template = demo
|
||||
|
||||
|
||||
# you can also handle datasets recursively in an atomic way without the possibility to override settings for child datasets.
|
||||
[bpool/BOOT]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[rpool/ROOT]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[rpool/home]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[rpool/var/lib/{{ ansible_hostname }}/data]
|
||||
use_template = production
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
[hpool/backup/{{ ansible_hostname }}/data]
|
||||
use_template = backup
|
||||
recursive = yes
|
||||
process_children_only = yes
|
||||
|
||||
#############################
|
||||
# templates below this line #
|
||||
#############################
|
||||
|
||||
# name your templates template_templatename. you can create your own, and use them in your module definitions above.
|
||||
|
||||
[template_demo]
|
||||
daily = 60
|
||||
|
||||
[template_production]
|
||||
frequently = 0
|
||||
hourly = 36
|
||||
daily = 30
|
||||
monthly = 3
|
||||
yearly = 0
|
||||
autosnap = yes
|
||||
autoprune = yes
|
||||
|
||||
[template_backup]
|
||||
autoprune = yes
|
||||
frequently = 0
|
||||
hourly = 30
|
||||
daily = 90
|
||||
monthly = 12
|
||||
yearly = 0
|
||||
|
||||
### don't take new snapshots - snapshots on backup
|
||||
### datasets are replicated in from source, not
|
||||
### generated locally
|
||||
autosnap = no
|
||||
|
||||
### monitor hourlies and dailies, but don't warn or
|
||||
### crit until they're over 48h old, since replication
|
||||
### is typically daily only
|
||||
hourly_warn = 2880
|
||||
hourly_crit = 3600
|
||||
daily_warn = 48
|
||||
daily_crit = 60
|
||||
|
||||
[template_hotspare]
|
||||
autoprune = yes
|
||||
frequently = 0
|
||||
hourly = 30
|
||||
daily = 90
|
||||
monthly = 3
|
||||
yearly = 0
|
||||
|
||||
### don't take new snapshots - snapshots on backup
|
||||
### datasets are replicated in from source, not
|
||||
### generated locally
|
||||
autosnap = no
|
||||
|
||||
### monitor hourlies and dailies, but don't warn or
|
||||
### crit until they're over 4h old, since replication
|
||||
### is typically hourly only
|
||||
hourly_warn = 4h
|
||||
hourly_crit = 6h
|
||||
daily_warn = 2d
|
||||
daily_crit = 4d
|
||||
|
||||
[template_scripts]
|
||||
### information about the snapshot will be supplied as environment variables,
|
||||
### see the README.md file for details about what is passed when.
|
||||
### run script before snapshot
|
||||
pre_snapshot_script = /path/to/script.sh
|
||||
### run script after snapshot
|
||||
post_snapshot_script = /path/to/script.sh
|
||||
### run script after pruning snapshot
|
||||
pruning_script = /path/to/script.sh
|
||||
### don't take an inconsistent snapshot (skip if pre script fails)
|
||||
#no_inconsistent_snapshot = yes
|
||||
### run post_snapshot_script when pre_snapshot_script is failing
|
||||
#force_post_snapshot_script = yes
|
||||
### limit allowed execution time of scripts before continuing (<= 0: infinite)
|
||||
script_timeout = 5
|
||||
|
||||
[template_ignore]
|
||||
autoprune = no
|
||||
autosnap = no
|
||||
monitor = no
|
@ -9,9 +9,30 @@
|
||||
mode: 0755
|
||||
|
||||
- name: Configure sanoid
|
||||
template:
|
||||
src: ./filesystem/{{ ansible_hostname }}/etc/sanoid/sanoid.conf.j2
|
||||
dest: /etc/sanoid/sanoid.conf
|
||||
blockinfile:
|
||||
path: /etc/sanoid/sanoid.conf
|
||||
create: yes
|
||||
insertbefore: "BOF"
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK SYSTEM #"
|
||||
block: "{{ lookup('file', './filesystem/{{ ansible_hostname }}/etc/sanoid/sanoid-system.conf') }}"
|
||||
|
||||
- name: Configure sanoid templates
|
||||
blockinfile:
|
||||
path: /etc/sanoid/sanoid.conf
|
||||
insertafter: "EOF"
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK TEMPLATES #"
|
||||
block: "{{ lookup('file', './filesystem/{{ ansible_hostname }}/etc/sanoid/sanoid-templates.conf') }}"
|
||||
|
||||
- name: Configure sanoid for services
|
||||
blockinfile:
|
||||
path: /etc/sanoid/sanoid.conf
|
||||
insertbefore: "# BEGIN ANSIBLE MANAGED BLOCK TEMPLATES #"
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK SERVICE {{ service_name }} #"
|
||||
block: "{{ lookup('template', './filesystem/{{ ansible_hostname }}/etc/sanoid/sanoid-service.conf') }}"
|
||||
|
||||
with_items: "{{ host_services }}"
|
||||
loop_control:
|
||||
loop_var: service_name
|
||||
|
||||
- name: Copy service for {{ ansible_hostname }} data replication
|
||||
template:
|
||||
|
Loading…
Reference in New Issue
Block a user