backup_bitbucket: New role

This commit is contained in:
Timo Makinen 2024-04-07 13:38:21 +00:00
parent 7496125098
commit 0d72e9e920
3 changed files with 59 additions and 0 deletions

View file

@ -0,0 +1,24 @@
#!/bin/sh
USERS="tmakinen"
set -eu
umask 027
cd /srv/backup/bitbucket.org
for _user in $USERS ; do
curl -sSf "https://api.bitbucket.org/2.0/repositories/${_user}" | \
jq -r '.values | .[] | [.name, .scm] | @tsv' | \
while read -r _repo _scm
do
[ "$_scm" = "git" ] || continue
_url="https://bitbucket.org/${_user}/${_repo}"
_gitdir="${_user}/${_repo}"
if [ ! -d "$_gitdir" ]; then
mkdir -p "$_gitdir"
git --git-dir="$_gitdir" init --quiet --bare
fi
git --git-dir="$_gitdir" fetch --quiet --force --prune --tags "$_url" "refs/heads/*:refs/heads/*"
done
done

View file

@ -0,0 +1,3 @@
---
dependencies:
- {role: backup_server}

View file

@ -0,0 +1,32 @@
---
- name: Install dependencies
ansible.builtin.package:
name: "{{ item }}"
state: installed
with_items:
- git
- jq
- name: Create backup directory
ansible.builtin.file:
path: /srv/backup/bitbucket.org
state: directory
mode: "0770"
owner: root
group: backup
- name: Copy backup script
ansible.builtin.copy:
dest: /usr/local/sbin/backup-bitbucket
src: backup-bitbucket.sh
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Add cron job
ansible.builtin.cron:
name: bitbucket-backup
job: /usr/local/sbin/backup-bitbucket
hour: "03"
minute: "10"
user: backup