revamp of bucket-related vars

This commit is contained in:
Kuba Orlik 2026-06-03 23:43:42 +02:00
parent 620e7d87ee
commit 2576de2e98
3 changed files with 16 additions and 5 deletions

View File

@ -1,3 +1,14 @@
- set_fact:
endpoint_without_bucket: "{{ cloudflare_r2_endpoint | urlsplit('scheme') ~ '://' ~ cloudflare_r2_endpoint | urlsplit('netloc') }}"
endpoint_path: "{{ cloudflare_r2_endpoint | urlsplit('path') }}"
restic_repository_name: "rclone:cloudflare-r2:backup-{{inventory_hostname}}"
bucket_name: >-
{{
(cloudflare_r2_endpoint | urlsplit('path') | default('', true) | regex_replace('^/', ''))
if (cloudflare_r2_endpoint | urlsplit('path') | default('') | length > 1)
else (backup_bucket_prefix ~ '-' ~ inventory_hostname)
}}
- name: create the /backup-dirs file # this also runs on main in case someone doesn't run the backup.yml - name: create the /backup-dirs file # this also runs on main in case someone doesn't run the backup.yml
file: file:
path: "/backup-dirs" path: "/backup-dirs"
@ -58,12 +69,12 @@
- name: "Create a bucket for the backups" - name: "Create a bucket for the backups"
amazon.aws.s3_bucket: amazon.aws.s3_bucket:
name: "{{ backup_bucket_prefix }}-{{ inventory_hostname }}" name: "{{ bucket_name }}"
state: present state: present
endpoint_url: "{{ cloudflare_r2_endpoint }}" endpoint_url: "{{ cloudflare_r2_endpoint }}"
access_key: "{{ cloudflare_r2_access_key }}" access_key: "{{ cloudflare_r2_access_key }}"
secret_key: "{{ cloudflare_r2_secret_key }}" secret_key: "{{ cloudflare_r2_secret_key }}"
when: (cloudflare_r2_endpoint | urlsplit('path') | default('')) | length < 1 when: (cloudflare_r2_endpoint | urlsplit('path') | default('')) | length < 1 # if the endpoint does not have a path, it assumes we shold create the bucket and have a token that allows that
- name: initiate restic repository - name: initiate restic repository
command: "restic init --password-file=/backup-pwd" command: "restic init --password-file=/backup-pwd"
@ -73,7 +84,7 @@
until: "command_result.rc==0 or 'repository master key and config already initialized' in command_result.stderr" until: "command_result.rc==0 or 'repository master key and config already initialized' in command_result.stderr"
failed_when: "command_result.rc!=0 and 'repository master key and config already initialized' not in command_result.stderr" failed_when: "command_result.rc!=0 and 'repository master key and config already initialized' not in command_result.stderr"
environment: environment:
RESTIC_REPOSITORY: "s3:{{ cloudflare_r2_endpoint }}{{ '' if ((cloudflare_r2_endpoint | urlsplit('path') | default('')) | length >1) else '/' ~ backup_bucket_prefix ~ '-' ~ inventory_hostname }}" RESTIC_REPOSITORY: "{{ restic_repository }}"
AWS_ACCESS_KEY_ID: "{{ cloudflare_r2_access_key }}" AWS_ACCESS_KEY_ID: "{{ cloudflare_r2_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ cloudflare_r2_secret_key }}" AWS_SECRET_ACCESS_KEY: "{{ cloudflare_r2_secret_key }}"
tags: tags:

View File

@ -1,3 +1,3 @@
export RESTIC_REPOSITORY="rclone:cloudflare-r2:{{ backup_bucket_prefix }}-{{ inventory_hostname }}" export RESTIC_REPOSITORY="{{ restic_repository_name }}"
export PWD_FILE=/backup-pwd export PWD_FILE=/backup-pwd
export RESTIC=/usr/bin/restic export RESTIC=/usr/bin/restic

View File

@ -4,6 +4,6 @@ provider = Cloudflare
access_key_id = {{ cloudflare_r2_access_key }} access_key_id = {{ cloudflare_r2_access_key }}
secret_access_key = {{ cloudflare_r2_secret_key }} secret_access_key = {{ cloudflare_r2_secret_key }}
region = auto region = auto
endpoint = {{ cloudflare_r2_endpoint | urlsplit('scheme') ~ '://' ~ cloudflare_r2_endpoint | urlsplit('netloc') }} endpoint = {{ endpoint_without_bucket }}
bucket_acl = private bucket_acl = private