backup-server: Initial version of role
This commit is contained in:
parent
3c4034f80b
commit
bf2f2e1f92
3 changed files with 116 additions and 0 deletions
51
roles/backup-server/files/backup-bitbucket.py
Normal file
51
roles/backup-server/files/backup-bitbucket.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
from subprocess import call
|
||||||
|
from urllib.request import urlopen
|
||||||
|
|
||||||
|
USERS = ["tmakinen"]
|
||||||
|
BACKUPDIR = "/srv/backup/bitbucket.org"
|
||||||
|
|
||||||
|
|
||||||
|
def repolist(username):
|
||||||
|
f = urlopen(f"https://api.bitbucket.org/2.0/repositories/{username}")
|
||||||
|
data = json.load(f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
for repo in data["values"]:
|
||||||
|
yield (
|
||||||
|
{
|
||||||
|
"name": repo["name"],
|
||||||
|
"scm": repo["scm"],
|
||||||
|
"wiki": repo["has_wiki"],
|
||||||
|
"issues": repo["has_issues"],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def gitbackup(destination, repo):
|
||||||
|
if not os.path.exists(destination):
|
||||||
|
os.makedirs(destination)
|
||||||
|
call(["git", "clone", "--quiet", repo, destination])
|
||||||
|
else:
|
||||||
|
os.chdir(destination)
|
||||||
|
call(["git", f"--git-dir={destination}/.git", "pull", "--quiet"])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
for user in USERS:
|
||||||
|
for repo in repolist(user):
|
||||||
|
if repo["scm"] == "git":
|
||||||
|
gitbackup(
|
||||||
|
f"{BACKUPDIR}/{user}/{repo['name']}",
|
||||||
|
f"https://bitbucket.org/{user}/{repo['name']}.git",
|
||||||
|
)
|
||||||
|
if repo["wiki"]:
|
||||||
|
gitbackup(
|
||||||
|
f"{BACKUPDIR}/{user}/{repo['name']}-wiki",
|
||||||
|
f"https://bitbucket.org/{user}/{repo['name']}.git/wiki",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise NotImplementedError("{repo['scm']} repositories not supported")
|
64
roles/backup-server/tasks/main.yml
Normal file
64
roles/backup-server/tasks/main.yml
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
- name: install packages
|
||||||
|
package:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: installed
|
||||||
|
with_items:
|
||||||
|
- git
|
||||||
|
- rclone
|
||||||
|
|
||||||
|
- name: create backup group
|
||||||
|
group:
|
||||||
|
name: backup
|
||||||
|
gid: 1003
|
||||||
|
|
||||||
|
- name: create backup user
|
||||||
|
user:
|
||||||
|
name: backup
|
||||||
|
comment: Backup Service
|
||||||
|
createhome: false
|
||||||
|
group: backup
|
||||||
|
home: /var/empty
|
||||||
|
shell: /bin/sh
|
||||||
|
uid: 1003
|
||||||
|
|
||||||
|
- name: create backup directory
|
||||||
|
file:
|
||||||
|
path: /export/backup
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: "{{ ansible_wheel }}"
|
||||||
|
|
||||||
|
- name: link backup directory
|
||||||
|
file:
|
||||||
|
dest: /srv/backup
|
||||||
|
src: /export/backup
|
||||||
|
state: link
|
||||||
|
owner: root
|
||||||
|
group: "{{ ansible_wheel }}"
|
||||||
|
follow: false
|
||||||
|
|
||||||
|
- name: create bitbucket backup directory
|
||||||
|
file:
|
||||||
|
path: /export/backup/bitbucket.org
|
||||||
|
state: directory
|
||||||
|
mode: 0775
|
||||||
|
owner: root
|
||||||
|
group: backup
|
||||||
|
|
||||||
|
- name: install bitbucket backup script
|
||||||
|
copy:
|
||||||
|
dest: /usr/local/sbin/backup-bitbucket
|
||||||
|
src: backup-bitbucket.py
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: "{{ ansible_wheel }}"
|
||||||
|
|
||||||
|
- name: add bitbucket backup cron job
|
||||||
|
cron:
|
||||||
|
name: bitbucket-backup
|
||||||
|
job: /usr/local/sbin/backup-bitbucket
|
||||||
|
hour: "03"
|
||||||
|
minute: "10"
|
||||||
|
user: backup
|
|
@ -8,3 +8,4 @@ id user group notes
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
1001 mirror mirror
|
1001 mirror mirror
|
||||||
1002 certbot certbot
|
1002 certbot certbot
|
||||||
|
1003 backup backup
|
||||||
|
|
Loading…
Add table
Reference in a new issue