vieter: add podman-based deployment
This commit is contained in:
parent
b2ea4ad0d3
commit
7f10c05cec
10 changed files with 173 additions and 32 deletions
|
|
@ -0,0 +1,3 @@
|
|||
arch.r8r.be {
|
||||
reverse_proxy 127.0.0.1:8020
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# vim: ft=systemd
|
||||
[Unit]
|
||||
Description=Self-hostable Arch repository server
|
||||
|
||||
[Container]
|
||||
Image=docker.io/chewingbever/vieter:dev
|
||||
EnvironmentFile=/etc/vieter/vieter.env
|
||||
|
||||
PublishPort=127.0.0.1:8020:8000
|
||||
Volume=/mnt/data1/vieter/data:/data
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
12
roles/any.software.vieter-podman/files/vieter.data.backup.sh
Normal file
12
roles/any.software.vieter-podman/files/vieter.data.backup.sh
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
data_dir='/mnt/data1/vieter/data'
|
||||
snapshot_dir="${data_dir}.snapshot"
|
||||
|
||||
# Read-only snapshot for atomic backup
|
||||
btrfs subvolume snapshot -r "$data_dir" "$snapshot_dir" || exit $?
|
||||
|
||||
/usr/local/bin/restic backup "$snapshot_dir"
|
||||
|
||||
# Always remove snapshot subvolume, even if restic fails
|
||||
btrfs subvolume delete "$snapshot_dir"
|
||||
4
roles/any.software.vieter-podman/handlers/main.yml
Normal file
4
roles/any.software.vieter-podman/handlers/main.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
- name: 'restart vieter'
|
||||
ansible.builtin.service:
|
||||
name: 'vieter-server'
|
||||
state: 'restarted'
|
||||
3
roles/any.software.vieter-podman/meta/main.yml
Normal file
3
roles/any.software.vieter-podman/meta/main.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: 'any.tools.caddy'
|
||||
80
roles/any.software.vieter-podman/tasks/main.yml
Normal file
80
roles/any.software.vieter-podman/tasks/main.yml
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
---
|
||||
- name: Ensure data directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/mnt/data1/vieter'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
|
||||
- name: Ensure data subvolumes are present
|
||||
community.general.btrfs_subvolume:
|
||||
name: '/vieter/{{ item }}'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure subvolume permissions are correct
|
||||
ansible.builtin.file:
|
||||
path: "/mnt/data1/vieter/{{ item }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: '33'
|
||||
group: '33'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure configuration directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/etc/vieter'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Ensure environment file is present
|
||||
ansible.builtin.template:
|
||||
src: 'vieter.env.j2'
|
||||
dest: '/etc/vieter/vieter.env'
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
notify: 'restart vieter'
|
||||
|
||||
- name: Ensure backup scripts are present
|
||||
ansible.builtin.copy:
|
||||
src: "vieter.{{ item }}.backup.sh"
|
||||
dest: "/etc/backups/vieter.{{ item }}.backup.sh"
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: '0644'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure Container unit files are present
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item }}"
|
||||
dest: "/etc/containers/systemd/{{ item }}"
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
loop:
|
||||
- 'vieter-server.container'
|
||||
register: res
|
||||
|
||||
- name: systemd-reload
|
||||
ansible.builtin.systemd_service:
|
||||
daemon_reload: true
|
||||
when: 'res.changed'
|
||||
|
||||
- name: Ensure Caddyfile is present
|
||||
ansible.builtin.copy:
|
||||
src: 'vieter-server.Caddyfile'
|
||||
dest: '/etc/caddy/vieter-server.Caddyfile'
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
notify: 'reload caddy'
|
||||
|
||||
- name: Ensure vieter service is enabled
|
||||
ansible.builtin.service:
|
||||
name: 'vieter-server'
|
||||
enabled: true
|
||||
state: 'started'
|
||||
11
roles/any.software.vieter-podman/templates/vieter.env.j2
Normal file
11
roles/any.software.vieter-podman/templates/vieter.env.j2
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
VIETER_API_KEY={{ vieter_api_key }}
|
||||
VIETER_LOG_LEVEL=DEBUG
|
||||
VIETER_DEFAULT_ARCH=x86_64
|
||||
VIETER_BASE_IMAGE=ghcr.io/menci/archlinuxarm:base-devel
|
||||
VIETER_GLOBAL_SCHEDULE=0 23
|
||||
VIETER_MAX_LOG_AGE=120
|
||||
VIETER_COLLECT_METRICS=0
|
||||
VIETER_ADDRESS=https://arch.r8r.be
|
||||
VIETER_MAX_CONCURRENT_BUILDS=1
|
||||
VIETER_ARCH=x86_64
|
||||
VIETER_POLLING_FREQUENCY=120
|
||||
Loading…
Add table
Add a link
Reference in a new issue