any.sofware.otter: added role
This commit is contained in:
parent
09e19680e6
commit
40905a5cbe
8 changed files with 143 additions and 0 deletions
3
roles/any.software.otter/files/otter.Caddyfile
Normal file
3
roles/any.software.otter/files/otter.Caddyfile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
otter.roosens.me {
|
||||
reverse_proxy localhost:8017
|
||||
}
|
||||
12
roles/any.software.otter/files/otter.data.backup.sh
Normal file
12
roles/any.software.otter/files/otter.data.backup.sh
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
data_dir='/mnt/data1/otter/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"
|
||||
13
roles/any.software.otter/files/otter.service
Normal file
13
roles/any.software.otter/files/otter.service
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[Unit]
|
||||
Description=Gpodder.net API implementation
|
||||
After=network.target network-online.target
|
||||
|
||||
[Service]
|
||||
Type=exec
|
||||
User=otter
|
||||
Group=otter
|
||||
ExecStart=/usr/local/bin/otter serve -c /etc/otter/otter.toml
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
5
roles/any.software.otter/handlers/main.yml
Normal file
5
roles/any.software.otter/handlers/main.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- name: 'restart otter'
|
||||
ansible.builtin.service:
|
||||
name: 'otter'
|
||||
state: 'restarted'
|
||||
3
roles/any.software.otter/meta/main.yml
Normal file
3
roles/any.software.otter/meta/main.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: any.tools.caddy
|
||||
85
roles/any.software.otter/tasks/main.yml
Normal file
85
roles/any.software.otter/tasks/main.yml
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
- name: Ensure binary is present
|
||||
ansible.builtin.get_url:
|
||||
url: 'https://git.rustybever.be/api/packages/Chewing_Bever/generic/otter/0.3.0/otter-linux-amd64'
|
||||
dest: '/usr/local/bin/otter'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: '755'
|
||||
notify: 'restart otter'
|
||||
|
||||
- name: Ensure system group exists
|
||||
ansible.builtin.group:
|
||||
name: 'otter'
|
||||
gid: 204
|
||||
system: true
|
||||
state: present
|
||||
|
||||
- name: Ensure system user exists
|
||||
ansible.builtin.user:
|
||||
name: 'otter'
|
||||
group: 'otter'
|
||||
uid: 204
|
||||
system: true
|
||||
create_home: false
|
||||
|
||||
- name: Ensure permissions are correct
|
||||
ansible.builtin.file:
|
||||
path: "{{ data_dir }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: '204'
|
||||
group: '204'
|
||||
|
||||
- name: Ensure configuration directory is present
|
||||
ansible.builtin.file:
|
||||
path: '/etc/otter'
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Ensure config file is present
|
||||
ansible.builtin.template:
|
||||
src: 'otter.toml.j2'
|
||||
dest: '/etc/otter/otter.toml'
|
||||
mode: '0644'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
notify: 'restart otter'
|
||||
|
||||
- name: Ensure Caddyfile is present
|
||||
ansible.builtin.copy:
|
||||
src: 'otter.Caddyfile'
|
||||
dest: '/etc/caddy/otter.Caddyfile'
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: reload caddy
|
||||
|
||||
# - name: Ensure backup scripts are present
|
||||
# ansible.builtin.copy:
|
||||
# src: "otter.{{ item }}.backup.sh"
|
||||
# dest: "/etc/backups/otter.{{ item }}.backup.sh"
|
||||
# owner: 'root'
|
||||
# group: 'root'
|
||||
# mode: '0644'
|
||||
# loop:
|
||||
# - 'data'
|
||||
|
||||
- name: Ensure service file is present
|
||||
ansible.builtin.copy:
|
||||
src: 'otter.service'
|
||||
dest: '/lib/systemd/system/otter.service'
|
||||
owner: 'root'
|
||||
group: 'root'
|
||||
mode: '0644'
|
||||
register: res
|
||||
|
||||
- name: systemd-reload
|
||||
ansible.builtin.systemd_service:
|
||||
daemon_reload: true
|
||||
when: 'res.changed'
|
||||
|
||||
- name: Ensure otter service is enabled
|
||||
ansible.builtin.service:
|
||||
name: 'otter'
|
||||
enabled: true
|
||||
7
roles/any.software.otter/templates/otter.toml.j2
Normal file
7
roles/any.software.otter/templates/otter.toml.j2
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
data_dir = "{{ data_dir }}"
|
||||
log_level = "debug"
|
||||
|
||||
[net]
|
||||
type = "tcp"
|
||||
domain = "0.0.0.0"
|
||||
port = 8017
|
||||
Loading…
Add table
Add a link
Reference in a new issue