aboutsummaryrefslogtreecommitdiffstats
path: root/tasks
diff options
context:
space:
mode:
authorColin Wilk <colin@wilk.cx>2026-06-28 22:47:11 +0200
committerColin Wilk <colin@wilk.cx>2026-06-28 23:18:35 +0200
commit7d96c1a11fc442b4efddf9ce5250cf0a9dfaf02e (patch)
tree5561dbeee61aaab05e21f3bc2895ff703a2ce137 /tasks
parent785e6c88e4c0a3ccc44fd357b4f693c5aadd432c (diff)
downloadansible-role-borgbackup-7d96c1a11fc442b4efddf9ce5250cf0a9dfaf02e.tar.gz
ansible-role-borgbackup-7d96c1a11fc442b4efddf9ce5250cf0a9dfaf02e.zip
Parametrize server-side borg user
Adds option to choose a non-default borg backup user on the server.
Diffstat (limited to 'tasks')
-rw-r--r--tasks/client_create_scripts_each.yml2
-rw-r--r--tasks/client_setup.yml8
-rw-r--r--tasks/server_setup.yml64
3 files changed, 62 insertions, 12 deletions
diff --git a/tasks/client_create_scripts_each.yml b/tasks/client_create_scripts_each.yml
index a9c5c31..e185013 100644
--- a/tasks/client_create_scripts_each.yml
+++ b/tasks/client_create_scripts_each.yml
@@ -28,7 +28,7 @@
export BORG_RSH="ssh -i {{ borg_ssh_key_path }}"
{% endif %}
borg create -C {{ borg_compression }} \
- borg@{{ borg_server_host_url }}:{{ borg_server_user_home }}/{{ borg_repo_name }}::{{ borg_backup_name_format }} \
+ {{ borg_server_user }}@{{ borg_server_host_url }}:{{ borg_server_user_home }}/{{ borg_repo_name }}::{{ borg_backup_name_format }} \
{{ borg_included_dirs | map('quote') | join(' ') }} \
{% for e in (borg_excluded_dirs | map('quote')) %} --exclude {{ e }} {% endfor %}
become: true
diff --git a/tasks/client_setup.yml b/tasks/client_setup.yml
index 71027c3..fc32e03 100644
--- a/tasks/client_setup.yml
+++ b/tasks/client_setup.yml
@@ -77,8 +77,8 @@
ansible.builtin.file:
path: "{{ borg_server_user_home }}/.ssh/authorized_keys"
state: touch
- owner: borg
- group: borg
+ owner: "{{ borg_server_user }}"
+ group: "{{ borg_server_user }}"
mode: "0600"
access_time: preserve
modification_time: preserve
@@ -161,7 +161,7 @@
- name: Initialise Borg repository
ansible.builtin.command: >
borg init --encryption=repokey
- borg@{{ borg_server_host_url }}:{{ borg_server_user_home }}/{{ borg_repo_name }}
+ {{ borg_server_user }}@{{ borg_server_host_url }}:{{ borg_server_user_home }}/{{ borg_repo_name }}
environment:
BORG_PASSPHRASE: "{{ borg_passphrase }}"
BORG_RSH: "{{ ('ssh -i ' ~ borg_ssh_key_path) if borg_ssh_key_per_repo else omit }}"
@@ -202,7 +202,7 @@
- name: If host new read encryption keys
ansible.builtin.command: >
borg key export --paper
- borg@{{ borg_server_host_url }}:{{ borg_server_user_home }}/{{ borg_repo_name }}
+ {{ borg_server_user }}@{{ borg_server_host_url }}:{{ borg_server_user_home }}/{{ borg_repo_name }}
environment:
BORG_RSH: "{{ ('ssh -i ' ~ borg_ssh_key_path) if borg_ssh_key_per_repo else omit }}"
become: true
diff --git a/tasks/server_setup.yml b/tasks/server_setup.yml
index e47d012..66b92bd 100644
--- a/tasks/server_setup.yml
+++ b/tasks/server_setup.yml
@@ -1,10 +1,60 @@
---
-- name: Create borg user
- ansible.builtin.user:
- name: borg
- comment: Borgbackup user
- create_home: true
- home: "{{ borg_server_user_home }}"
- generate_ssh_key: true
+- name: Create borg_server_user on server
+ when: borg_server_user_create
+ block:
+ - name: Create borg user
+ ansible.builtin.user:
+ name: "{{ borg_server_user }}"
+ comment: Borgbackup user
+ create_home: true
+ home: "{{ borg_server_user_home }}"
+ generate_ssh_key: false
+ become: true
+ delegate_to: "{{ borg_server_host }}"
+
+- name: Ensure borg_server_user exists
+ ansible.builtin.getent:
+ database: passwd
+ key: "{{ borg_server_user }}"
+ become: true
+ delegate_to: "{{ borg_server_host }}"
+
+- name: Fail if borg_server_user does not exist
+ ansible.builtin.fail:
+ msg: |
+ User {{ borg_server_user }} does not exist on {{ borg_server_host }}.
+ Please create the user before running this role or set borg_server_user_create: true.
+ when: getent_passwd[borg_server_user] is not defined
+ delegate_to: "{{ borg_server_host }}"
+
+- name: Ensure borg server user home directory exists
+ ansible.builtin.file:
+ path: "{{ borg_server_user_home }}"
+ state: directory
+ owner: "{{ borg_server_user }}"
+ group: "{{ borg_server_user }}"
+ mode: "0700"
+ become: true
+ delegate_to: "{{ borg_server_host }}"
+
+- name: Ensure .ssh directory exists
+ ansible.builtin.file:
+ path: "{{ borg_server_user_home }}/.ssh"
+ state: directory
+ owner: "{{ borg_server_user }}"
+ group: "{{ borg_server_user }}"
+ mode: "0700"
+ become: true
+ delegate_to: "{{ borg_server_host }}"
+
+- name: Ensure authorized_keys file exists
+ ansible.builtin.file:
+ path: "{{ borg_server_user_home }}/.ssh/authorized_keys"
+ state: touch
+ owner: "{{ borg_server_user }}"
+ group: "{{ borg_server_user }}"
+ mode: "0600"
+ access_time: preserve
+ modification_time: preserve
become: true
delegate_to: "{{ borg_server_host }}"