feat: added site-podman role
This commit is contained in:
parent
9fdff493b2
commit
6b93b3f7ed
10 changed files with 164 additions and 34 deletions
3
roles/any.software.site-podman/files/site.Caddyfile
Normal file
3
roles/any.software.site-podman/files/site.Caddyfile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
rustybever.be www.rustybever.be {
|
||||
reverse_proxy 127.0.0.1:8021
|
||||
}
|
||||
16
roles/any.software.site-podman/files/site.container
Normal file
16
roles/any.software.site-podman/files/site.container
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# vim: ft=systemd
|
||||
[Unit]
|
||||
Description=The Rusty Bever backend
|
||||
|
||||
[Container]
|
||||
Image=docker.io/chewingbever/site:latest
|
||||
EnvironmentFile=/etc/site/site.env
|
||||
|
||||
PublishPort=127.0.0.1:8021:3000
|
||||
Volume=/mnt/data1/site/data:/data
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
12
roles/any.software.site-podman/files/site.data.backup.sh
Normal file
12
roles/any.software.site-podman/files/site.data.backup.sh
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
data_dir='/mnt/data1/site/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.site-podman/handlers/main.yml
Normal file
4
roles/any.software.site-podman/handlers/main.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
- name: 'restart site'
|
||||
ansible.builtin.service:
|
||||
name: 'site'
|
||||
state: 'restarted'
|
||||
3
roles/any.software.site-podman/meta/main.yml
Normal file
3
roles/any.software.site-podman/meta/main.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: 'any.tools.caddy'
|
||||
80
roles/any.software.site-podman/tasks/main.yml
Normal file
80
roles/any.software.site-podman/tasks/main.yml
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
---
|
||||
- name: Ensure data directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/mnt/data1/site'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
|
||||
- name: Ensure data subvolumes are present
|
||||
community.general.btrfs_subvolume:
|
||||
name: '/site/{{ item }}'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure subvolume permissions are correct
|
||||
ansible.builtin.file:
|
||||
path: "/mnt/data1/site/{{ item }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: '82'
|
||||
group: '82'
|
||||
loop:
|
||||
- 'data'
|
||||
|
||||
- name: Ensure configuration directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/etc/site'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Ensure environment file is present
|
||||
ansible.builtin.template:
|
||||
src: 'site.env.j2'
|
||||
dest: '/etc/site/site.env'
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
notify: 'restart site'
|
||||
|
||||
- name: Ensure backup scripts are present
|
||||
ansible.builtin.copy:
|
||||
src: "site.{{ item }}.backup.sh"
|
||||
dest: "/etc/backups/site.{{ 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:
|
||||
- 'site.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: 'site.Caddyfile'
|
||||
dest: '/etc/caddy/site.Caddyfile'
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
notify: 'reload caddy'
|
||||
|
||||
- name: Ensure site service is enabled
|
||||
ansible.builtin.service:
|
||||
name: 'site'
|
||||
enabled: true
|
||||
state: 'started'
|
||||
1
roles/any.software.site-podman/templates/site.env.j2
Normal file
1
roles/any.software.site-podman/templates/site.env.j2
Normal file
|
|
@ -0,0 +1 @@
|
|||
API_KEY={{ site_api_key }}
|
||||
Loading…
Add table
Add a link
Reference in a new issue