350 Role vbotka.freebsd.rsnapshot¶
Use case¶
Use the role vbotka.freebsd.rsnapshot to install and configure rsnapshot.
Tree¶
shell> tree .
.
├── ansible.cfg
├── group_vars
│ └── all
│ ├── ansible-client.yml
│ ├── common.yml
│ └── rsnapshot.yml
├── hosts
│ ├── 04_iocage.yml
│ └── 99_constructed.yml
├── iocage.ini
├── pb-install.yml
└── pb-test.yml
Synopsis¶
The playbook vbotka.freebsd.pb_iocage_ansible_clients.yml creates and starts jails.
The playbook
pb-install.ymlinstalls rsnapshot in running jails.The playbook
pb-test.ymlconfigures rsnapshot in running jails.
Requirements¶
Templates created in 202 Create iocage templates. Clone DHCP jails.
Notes¶
The jail name doesn’t work in the parameter name of the module community.general.pkgng if the jail was created by
iocage. Use JID insteadjail: "{{ iocage_jid }}"
The plays run at the jails. The inventory
iocage.iniis needed when a task is delegated to an iocage hostdelegate_to: "{{ iocage_tags.vmm }}"
Disable use_globs
freebsd_pkgng_use_globs: false
to use the packages in the form pkg-origin
rsnapshot_packages: - sysutils/rsnapshot
ansible.cfg¶
Do not display skipped hosts. See the option display_skipped_hosts
[defaults]
gathering = explicit
callback_result_format = yaml
display_skipped_hosts = false
[connection]
pipelining = true
Inventory iocage.ini¶
iocage_02 ansible_host=10.1.0.73
iocage_04 ansible_host=10.1.0.29
[iocage]
iocage_04
[iocage:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent
group_vars¶
properties:
notes: "vmm={{ inventory_hostname }}"
swarms:
sw_01:
count: 3
template: ansible_client
properties:
bpf: 1
dhcp: 1
vnet: 1
ansible_python_interpreter: auto_silent
freebsd_pkgng_cached: false
freebsd_pkgng_use_globs: false
rsnapshot_install: false
rsnapshot_packages:
- sysutils/rsnapshot
rsnapshot_config_template: rsnapshot-auto.conf.j2
rsnapshot_snapshot_root: /export/backup/snapshots
rsnapshot_no_create_root: '0'
rsnapshot_backup_points:
- {dir: /etc/, host: localhost/}
- {dir: /usr/local/etc/, host: localhost/}
rsnapshot_backup_points_test:
- {dir: /scratch/rsnapshot-test/, host: localhost/}
rsnapshot_exclude:
- regex: '.git/'
- regex: '.#*'
rsnapshot_test: true
rsnapshot_config_template_test: rsnapshot-auto-test.conf.j2
rsnapshot_snapshot_root_test: /export/backup/snapshots-test
Create and start jails¶
(env) > ansible-playbook vbotka.freebsd.pb_iocage_ansible_clients.yml -i iocage \
-t swarm -e swarm=true
PLAY [Create and start jails. Optionally stop and destroy jails.] **************
TASK [Get iocage facts] ********************************************************
ok: [iocage_04]
TASK [Create swarms] ***********************************************************
changed: [iocage_04] => (item=sw_01)
TASK [Get iocage facts] ********************************************************
ok: [iocage_04]
TASK [Start swarms] ************************************************************
changed: [iocage_04] => (item=sw_01)
PLAY RECAP *********************************************************************
iocage_04 : ok=4 changed=2 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
Jails at iocage_04¶
[iocage_04]# iocage list -l
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
+=====+==========+======+=======+======+=================+====================+=====+================+==========+
| 143 | 0f5055fd | off | up | jail | 14.3-RELEASE-p1 | epair0b|10.1.0.121 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 145 | dbdcbdec | off | up | jail | 14.3-RELEASE-p1 | epair0b|10.1.0.194 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
| 144 | f53c3b61 | off | up | jail | 14.3-RELEASE-p1 | epair0b|10.1.0.243 | - | ansible_client | no |
+-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
Inventory hosts¶
plugin: vbotka.freebsd.iocage
host: 10.1.0.29
user: admin
env:
CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
get_properties: True
hooks_results:
- /var/db/dhclient-hook.address.epair0b
compose:
ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
iocage_tags: dict(iocage_properties.notes | split | map('split', '='))
plugin: ansible.builtin.constructed
groups:
up: iocage_state == 'up'
keyed_groups:
- prefix: swarm
key: iocage_tags.swarm
- prefix: vmm
key: iocage_tags.vmm
Display inventory¶
(env) > ansible-inventory -i hosts -i iocage.ini --graph
@all:
|--@ungrouped:
| |--iocage_02
|--@up:
| |--0f5055fd
| |--dbdcbdec
| |--f53c3b61
|--@swarm_sw_01:
| |--0f5055fd
| |--dbdcbdec
| |--f53c3b61
|--@vmm_iocage_04:
| |--0f5055fd
| |--dbdcbdec
| |--f53c3b61
|--@iocage:
| |--iocage_04
Playbook pb-install.yml¶
- name: Install packages.
hosts: up
gather_facts: true
remote_user: admin
become: true
tasks:
- name: Install rsnapshot packages.
delegate_to: "{{ iocage_tags.vmm }}"
register: out
community.general.pkgng:
name: "{{ rsnapshot_packages }}"
jail: "{{ iocage_jid }}"
cached: "{{ freebsd_pkgng_cached }}"
use_globs: "{{ freebsd_pkgng_use_globs }}"
- name: Debug.
when: debug | d(false) | bool
ansible.builtin.debug:
var: out
Playbook output - Install packages¶
The inventory iocage.ini is needed when a task is delegated to an iocage host
(env) > ansible-playbook pb-install.yml -i hosts -i iocage.ini
PLAY [Install packages.] *******************************************************
TASK [Gathering Facts] *********************************************************
ok: [dbdcbdec]
ok: [f53c3b61]
ok: [0f5055fd]
TASK [Install rsnapshot packages.] *********************************************
changed: [0f5055fd -> iocage_04(10.1.0.29)]
changed: [f53c3b61 -> iocage_04(10.1.0.29)]
changed: [dbdcbdec -> iocage_04(10.1.0.29)]
PLAY RECAP *********************************************************************
0f5055fd : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
dbdcbdec : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
f53c3b61 : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Playbook pb-test.yml¶
- name: Test role vbotka.freebsd.rsnapshot
hosts: up
gather_facts: true
remote_user: admin
become: true
roles:
- vbotka.freebsd.rsnapshot
Playbook output - Display variables¶
(env) > ansible-playbook pb-test.yml -i hosts -t rsnapshot_debug -e rsnapshot_debug=true
PLAY [Test role vbotka.freebsd.rsnapshot] **************************************
TASK [Gathering Facts] *********************************************************
ok: [f53c3b61]
ok: [0f5055fd]
ok: [dbdcbdec]
TASK [vbotka.freebsd.rsnapshot : Vars: Set variables for al_include_os_vars_path] ***
ok: [0f5055fd]
ok: [dbdcbdec]
ok: [f53c3b61]
TASK [Vars: Include OS vars] ***************************************************
included: vbotka.freebsd.lib for 0f5055fd, dbdcbdec, f53c3b61
TASK [vbotka.freebsd.lib : Al_include_os_vars_path: Vars from /scratch/collections/ansible_collections/vbotka/freebsd/roles/rsnapshot/vars/defaults] ***
ok: [dbdcbdec]
ok: [f53c3b61]
ok: [0f5055fd]
TASK [vbotka.freebsd.rsnapshot : Vars: Create template specific vars.] *********
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/rsnapshot/tasks/vars-auto.yml for 0f5055fd, dbdcbdec, f53c3b61
TASK [vbotka.freebsd.rsnapshot : Vars-auto: set rsnapshot_conf_dict] ***********
ok: [0f5055fd]
ok: [dbdcbdec]
ok: [f53c3b61]
TASK [vbotka.freebsd.rsnapshot : Vars-auto: Debug rsnapshot_conf_dict rsnapshot_debug=true] ***
ok: [0f5055fd] =>
rsnapshot_conf_dict:
cmd_cp: /bin/cp
cmd_logger: /usr/bin/logger
cmd_rm: /bin/rm
cmd_rsync: /usr/local/bin/rsync
cmd_ssh: /usr/bin/ssh
config_version: '1.2'
link_dest: '1'
lockfile: /var/run/rsnapshot.pid
logfile: /var/log/rsnapshot
loglevel: '3'
no_create_root: '0'
retain_daily: '7'
retain_hourly: '6'
retain_monthly: '3'
retain_weekly: '4'
snapshot_root: /export/backup/snapshots
verbose: '2'
ok: [dbdcbdec] =>
rsnapshot_conf_dict:
cmd_cp: /bin/cp
cmd_logger: /usr/bin/logger
cmd_rm: /bin/rm
cmd_rsync: /usr/local/bin/rsync
cmd_ssh: /usr/bin/ssh
config_version: '1.2'
link_dest: '1'
lockfile: /var/run/rsnapshot.pid
logfile: /var/log/rsnapshot
loglevel: '3'
no_create_root: '0'
retain_daily: '7'
retain_hourly: '6'
retain_monthly: '3'
retain_weekly: '4'
snapshot_root: /export/backup/snapshots
verbose: '2'
ok: [f53c3b61] =>
rsnapshot_conf_dict:
cmd_cp: /bin/cp
cmd_logger: /usr/bin/logger
cmd_rm: /bin/rm
cmd_rsync: /usr/local/bin/rsync
cmd_ssh: /usr/bin/ssh
config_version: '1.2'
link_dest: '1'
lockfile: /var/run/rsnapshot.pid
logfile: /var/log/rsnapshot
loglevel: '3'
no_create_root: '0'
retain_daily: '7'
retain_hourly: '6'
retain_monthly: '3'
retain_weekly: '4'
snapshot_root: /export/backup/snapshots
verbose: '2'
TASK [vbotka.freebsd.rsnapshot : Debug] ****************************************
ok: [0f5055fd] =>
msg: |-
rsnapshot_role_version: 2.7.3
ansible_architecture: amd64
ansible_os_family: FreeBSD
ansible_distribution: FreeBSD
ansible_distribution_major_version: 14
ansible_distribution_version: 14.3
ansible_distribution_release: 14.3-RELEASE
ansible_python_version: 3.11.13
freebsd_install_method: packages
freebsd_use_packages: True
freebsd_cached: False
freebsd_state: present
freebsd_use_globs: False
freebsd_install_retries: 10
freebsd_install_delay: 5
linux_install_retries: 10
linux_install_delay: 5
rsnapshot_install: False
rsnapshot_packages:
- sysutils/rsnapshot
rsnapshot_supported_linux_family: ['Debian', 'RedHat']
rsnapshot_backup_conf: False
rsnapshot_config_template: rsnapshot-auto.conf.j2
rsnapshot_config_version: 1.2
rsnapshot_test: True
rsnapshot_config_template_test: rsnapshot-auto-test.conf.j2
ok: [dbdcbdec] =>
msg: |-
rsnapshot_role_version: 2.7.3
ansible_architecture: amd64
ansible_os_family: FreeBSD
ansible_distribution: FreeBSD
ansible_distribution_major_version: 14
ansible_distribution_version: 14.3
ansible_distribution_release: 14.3-RELEASE
ansible_python_version: 3.11.13
freebsd_install_method: packages
freebsd_use_packages: True
freebsd_cached: False
freebsd_state: present
freebsd_use_globs: False
freebsd_install_retries: 10
freebsd_install_delay: 5
linux_install_retries: 10
linux_install_delay: 5
rsnapshot_install: False
rsnapshot_packages:
- sysutils/rsnapshot
rsnapshot_supported_linux_family: ['Debian', 'RedHat']
rsnapshot_backup_conf: False
rsnapshot_config_template: rsnapshot-auto.conf.j2
rsnapshot_config_version: 1.2
rsnapshot_test: True
rsnapshot_config_template_test: rsnapshot-auto-test.conf.j2
ok: [f53c3b61] =>
msg: |-
rsnapshot_role_version: 2.7.3
ansible_architecture: amd64
ansible_os_family: FreeBSD
ansible_distribution: FreeBSD
ansible_distribution_major_version: 14
ansible_distribution_version: 14.3
ansible_distribution_release: 14.3-RELEASE
ansible_python_version: 3.11.13
freebsd_install_method: packages
freebsd_use_packages: True
freebsd_cached: False
freebsd_state: present
freebsd_use_globs: False
freebsd_install_retries: 10
freebsd_install_delay: 5
linux_install_retries: 10
linux_install_delay: 5
rsnapshot_install: False
rsnapshot_packages:
- sysutils/rsnapshot
rsnapshot_supported_linux_family: ['Debian', 'RedHat']
rsnapshot_backup_conf: False
rsnapshot_config_template: rsnapshot-auto.conf.j2
rsnapshot_config_version: 1.2
rsnapshot_test: True
rsnapshot_config_template_test: rsnapshot-auto-test.conf.j2
PLAY RECAP *********************************************************************
0f5055fd : ok=8 changed=0 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
dbdcbdec : ok=8 changed=0 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
f53c3b61 : ok=8 changed=0 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
Playbook output - Configure rsnapshot¶
(env) > ansible-playbook pb-test.yml -i hosts
PLAY [Test role vbotka.freebsd.rsnapshot] **************************************
TASK [Gathering Facts] *********************************************************
ok: [0f5055fd]
ok: [dbdcbdec]
ok: [f53c3b61]
TASK [vbotka.freebsd.rsnapshot : Vars: Set variables for al_include_os_vars_path] ***
ok: [0f5055fd]
ok: [dbdcbdec]
ok: [f53c3b61]
TASK [Vars: Include OS vars] ***************************************************
included: vbotka.freebsd.lib for 0f5055fd, dbdcbdec, f53c3b61
TASK [vbotka.freebsd.lib : Al_include_os_vars_path: Vars from /scratch/collections/ansible_collections/vbotka/freebsd/roles/rsnapshot/vars/defaults] ***
ok: [0f5055fd]
ok: [dbdcbdec]
ok: [f53c3b61]
TASK [vbotka.freebsd.rsnapshot : Vars: Create template specific vars.] *********
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/rsnapshot/tasks/vars-auto.yml for 0f5055fd, dbdcbdec, f53c3b61
TASK [vbotka.freebsd.rsnapshot : Vars-auto: set rsnapshot_conf_dict] ***********
ok: [0f5055fd]
ok: [dbdcbdec]
ok: [f53c3b61]
TASK [vbotka.freebsd.rsnapshot : Configure: Create directory /export/backup/snapshots] ***
changed: [f53c3b61]
changed: [0f5055fd]
changed: [dbdcbdec]
TASK [vbotka.freebsd.rsnapshot : Configure: Create configuration /usr/local/etc/rsnapshot.conf] ***
changed: [0f5055fd]
changed: [dbdcbdec]
changed: [f53c3b61]
TASK [vbotka.freebsd.rsnapshot : Test: Create test directory /export/backup/snapshots-test] ***
changed: [dbdcbdec]
changed: [0f5055fd]
changed: [f53c3b61]
TASK [vbotka.freebsd.rsnapshot : Test: Create test backup_points] **************
changed: [dbdcbdec] => (item={'dir': '/scratch/rsnapshot-test/', 'host': 'localhost/'})
changed: [0f5055fd] => (item={'dir': '/scratch/rsnapshot-test/', 'host': 'localhost/'})
changed: [f53c3b61] => (item={'dir': '/scratch/rsnapshot-test/', 'host': 'localhost/'})
TASK [vbotka.freebsd.rsnapshot : Test: Create test configuration /usr/local/etc/rsnapshot-test.conf] ***
changed: [f53c3b61]
changed: [dbdcbdec]
changed: [0f5055fd]
PLAY RECAP *********************************************************************
0f5055fd : ok=11 changed=5 unreachable=0 failed=0 skipped=12 rescued=0 ignored=0
dbdcbdec : ok=11 changed=5 unreachable=0 failed=0 skipped=12 rescued=0 ignored=0
f53c3b61 : ok=11 changed=5 unreachable=0 failed=0 skipped=12 rescued=0 ignored=0
Results¶
TBD