add resticprofile for backups
All checks were successful
Ansible Deploy / deploy (Ansible/playbooks/debian.yml) (push) Successful in 2m18s
Ansible Deploy / deploy (Ansible/playbooks/proxmox.yml) (push) Successful in 2m33s
Ansible Lint / build (push) Successful in 1m13s

This commit is contained in:
Benjamin Hays 2024-12-24 10:20:18 -05:00
parent 30de4451f8
commit 888c8909a5
Signed by: BenHays42
GPG Key ID: CE14B8B296ABEFB1
4 changed files with 133 additions and 2 deletions

3
.gitignore vendored
View File

@ -1,3 +1,4 @@
.vscode/
*.log
nmap.xml
nmap.xml
.DS_Store

@ -1 +1 @@
Subproject commit c32f82f99d6b33febc8cdf8bfb3c0381fbd37ecb
Subproject commit a1017fe0d47c5ce649c9da281c4609cc395900e3

View File

@ -0,0 +1,128 @@
---
- name: Install restic backup profile
hosts: debian_servers
vars:
target_bin: /usr/local/bin
temp_dir: /var/tmp/ansible
remote_user: bhays
become: true
become_user: root
pre_tasks:
- name: Update apt cache if needed.
ansible.builtin.apt:
update_cache: true
cache_valid_time: 3600
tasks:
# Dependencies
- name: Install packages
ansible.builtin.apt:
name:
- python3-pip
- libssl-dev
state: present
# Create an empty temp directory
- name: Remove temp directory
ansible.builtin.file:
path: "{{ temp_dir }}"
state: absent
- name: Create a temp directory if it does not exist
ansible.builtin.file:
path: "{{ temp_dir }}"
state: directory
mode: "0755"
# Install restic
- name: Install restic
ansible.builtin.apt:
name:
- restic
state: present
# Install resticprofile
- name: Download resticprofile
ansible.builtin.get_url:
url: "https://github.com/creativeprojects/resticprofile/releases/download/v{{ ver }}/resticprofile_{{ ver }}_linux_amd64.tar.gz"
dest: "{{ temp_dir }}/resticprofile.tar.gz"
mode: "0644"
vars:
ver: "0.29.0" # hardcoded for now
- name: Extract resticprofile.tgz
ansible.builtin.unarchive:
src: "{{ temp_dir }}/resticprofile.tar.gz"
dest: "{{ temp_dir }}/"
remote_src: true
- name: Install resticprofile
ansible.builtin.command: "install {{ temp_dir }}/resticprofile {{ target_bin }}/"
changed_when: true
# TODO: unschedule all profiles (resticprofile unschedule --all)
- name: Ensures resticprofile configuration directory exists
ansible.builtin.file:
path: "/opt/resticprofile"
state: directory
owner: "bhays"
group: "bhays"
mode: "770"
- name: Generates resticprofile configuration file
ansible.builtin.copy:
src: "{{ item }}"
dest: "/opt/resticprofile/"
owner: "bhays"
group: "bhays"
mode: "0440"
with_fileglob:
- "../homelab-vault/resticprofile/*"
- name: Copy SFTP key
ansible.builtin.copy:
owner: bhays
mode: "0600"
src: ~/.ssh/id_rsa
dest: /home/bhays/.ssh/id_rsa
- name: Copy SSH config
ansible.builtin.copy:
owner: bhays
mode: "0600"
src: ../../Configs/ssh_config
dest: /home/bhays/.ssh/config
# TODO: schedule all profiles (resticprofile schedule --all)
- name: Unschedule home folder backup
ansible.builtin.command:
cmd: "resticprofile homes.unschedule"
chdir: "/opt/resticprofile/"
changed_when: true
become: true
become_user: bhays
- name: Unschedule root home folder backup
ansible.builtin.command:
cmd: "resticprofile homes.unschedule"
chdir: "/opt/resticprofile/"
changed_when: true
- name: Schedule home folder backup
ansible.builtin.command:
cmd: "resticprofile homes.schedule"
chdir: "/opt/resticprofile/"
changed_when: true
become: true
become_user: bhays
- name: Enable linger so that user timers run when loggedoff
ansible.builtin.command:
cmd: "loginctl enable-linger bhays"
changed_when: true
# Cleanup
- name: Remove temp directory
ansible.builtin.file:
path: "{{ temp_dir }}"
state: absent

2
Configs/ssh_config Normal file
View File

@ -0,0 +1,2 @@
Host *.benhays.cloud
StrictHostKeyChecking no