backup_github: New role

This commit is contained in:
Timo Makinen 2024-04-07 14:35:04 +00:00
parent 5cd6edc1b1
commit febee5c72e
3 changed files with 57 additions and 0 deletions

View file

@ -0,0 +1,22 @@
#!/bin/sh
ORGS="foo-sh"
set -eu
umask 027
cd /srv/backup/github.com
for _org in $ORGS ; do
curl -sSf "https://api.github.com/orgs/foo-sh/repos" | jq -r '.[] | .name' | \
while read -r _repo
do
_url="https://github.com/${_org}/${_repo}.git"
_gitdir="${_org}/${_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/github.com
state: directory
mode: "0770"
owner: root
group: backup
- name: Copy backup script
ansible.builtin.copy:
dest: /usr/local/sbin/backup-github
src: backup-github.sh
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Add cron job
ansible.builtin.cron:
name: github-backup
job: /usr/local/sbin/backup-github
hour: "03"
minute: "20"
user: backup