diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-03-25 21:01:23 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-03-25 21:01:23 -0400 |
commit | 6c81e1b01e0850be93419b68d4c61529de519d2a (patch) | |
tree | 0dfdd5574b16cbb03dd819f8c3186572c86ab846 /modules/borgmatic | |
parent | d8f2b5669bb53f4a60979601ddd966f8c5ae12af (diff) | |
download | puppet-tozt-6c81e1b01e0850be93419b68d4c61529de519d2a.tar.gz puppet-tozt-6c81e1b01e0850be93419b68d4c61529de519d2a.zip |
refactor
Diffstat (limited to 'modules/borgmatic')
-rw-r--r-- | modules/borgmatic/manifests/init.pp | 41 | ||||
-rw-r--r-- | modules/borgmatic/templates/config.yaml | 25 |
2 files changed, 66 insertions, 0 deletions
diff --git a/modules/borgmatic/manifests/init.pp b/modules/borgmatic/manifests/init.pp new file mode 100644 index 0000000..9ea1181 --- /dev/null +++ b/modules/borgmatic/manifests/init.pp @@ -0,0 +1,41 @@ +class borgmatic($host = 'partofme.algo') { + package { 'borgmatic': + ensure => installed; + } + + $current_hostname = "${facts['networking']['hostname']}" + $borgmatic_passphrase = secret::value('borgmatic_passphrase') + file { + "/etc/borgmatic": + ensure => directory; + "/etc/borgmatic/config.yaml": + content => template('borgmatic/config.yaml'), + require => File["/etc/borgmatic"]; + } + + secret { "/etc/borgmatic/borg_ssh_key": + source => 'borg_ssh_key', + require => File["/etc/borgmatic"]; + } + + exec { '/usr/bin/borgmatic init --encryption repokey': + environment => [ + "BORG_PASSPHRASE=${borgmatic_passphrase}", + ], + unless => '/usr/bin/borgmatic info > /dev/null', + require => [ + Package['borgmatic'], + File['/etc/borgmatic/config.yaml'], + ] + } + + service { 'borgmatic.timer': + ensure => running, + enable => true, + require => [ + Package['borgmatic'], + File['/etc/borgmatic/config.yaml'], + Exec['/usr/bin/borgmatic init --encryption repokey'], + ]; + } +} diff --git a/modules/borgmatic/templates/config.yaml b/modules/borgmatic/templates/config.yaml new file mode 100644 index 0000000..60a1e42 --- /dev/null +++ b/modules/borgmatic/templates/config.yaml @@ -0,0 +1,25 @@ +location: + source_directories: + - /home + - /etc + - /usr/local/bin + repositories: + - borg@<%= @borgmatic_host %>:<%= current_hostname %> + atime: false + exclude_patterns: + - /home/*/.cache + - /home/*/.cargo + - /home/*/.rustup + - /home/doy/coding/*/target + - /home/doy/mnt + - /home/doy/tmp + +storage: + encryption_passphrase: "<%= @borgmatic_passphrase %>" + ssh_command: /usr/bin/ssh -i /etc/borgmatic/borg_ssh_key -o StrictHostKeyChecking=no + +retention: + keep_daily: 7 + keep_weekly: 4 + keep_monthly: 12 + keep_yearly: 1000 |