move to recommended file and directory structure
This commit is contained in:
parent
7c2c5e06b2
commit
3cb956b607
@ -1,217 +0,0 @@
|
|||||||
- name: Deploy services
|
|
||||||
hosts: all
|
|
||||||
become: yes
|
|
||||||
tasks:
|
|
||||||
# Install base software for rootless podman containers
|
|
||||||
- name: Check if systemd-container is installed
|
|
||||||
ansible.builtin.command:
|
|
||||||
cmd: "zypper se -i systemd-container"
|
|
||||||
register: systemd_container_installed
|
|
||||||
ignore_errors: yes
|
|
||||||
- name: Check if podman is installed
|
|
||||||
ansible.builtin.command:
|
|
||||||
cmd: "zypper se -i podman"
|
|
||||||
register: podman_installed
|
|
||||||
ignore_errors: yes
|
|
||||||
- name: Install software if not installed
|
|
||||||
ansible.builtin.command:
|
|
||||||
cmd: "transactional-update --non-interactive pkg in systemd-container podman"
|
|
||||||
become: yes
|
|
||||||
when: systemd_container_installed.rc != 0 or podman_installed.rc != 0
|
|
||||||
register: software_installed
|
|
||||||
- name: Reboot if software was installed
|
|
||||||
ansible.builtin.reboot:
|
|
||||||
when: software_installed.changed
|
|
||||||
|
|
||||||
# Deploy services as rootless containers
|
|
||||||
- name: Deploy traefik
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- traefik
|
|
||||||
vars:
|
|
||||||
service_name: "traefik"
|
|
||||||
systemd_service_name: "traefik"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- traefik
|
|
||||||
|
|
||||||
- name: Deploy wekantesting
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- wekan
|
|
||||||
- wekantesting
|
|
||||||
vars:
|
|
||||||
service_name: "wekantesting"
|
|
||||||
systemd_service_name: "null" #"wekantesting-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- wekan
|
|
||||||
- wekantesting
|
|
||||||
|
|
||||||
- name: Deploy wekan
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- wekan
|
|
||||||
vars:
|
|
||||||
service_name: "wekan"
|
|
||||||
systemd_service_name: "null" #"wekan-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- wekan
|
|
||||||
|
|
||||||
- name: Deploy gitea
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- gitea
|
|
||||||
vars:
|
|
||||||
service_name: "gitea"
|
|
||||||
systemd_service_name: "gitea-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- gitea
|
|
||||||
|
|
||||||
- name: Deploy mumble
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- mumble
|
|
||||||
vars:
|
|
||||||
service_name: "mumble"
|
|
||||||
systemd_service_name: "mumble"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- mumble
|
|
||||||
|
|
||||||
- name: Deploy bitwarden
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- bitwarden
|
|
||||||
vars:
|
|
||||||
service_name: "bitwarden"
|
|
||||||
systemd_service_name: "bitwarden"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- bitwarden
|
|
||||||
|
|
||||||
- name: Deploy actual
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- actual
|
|
||||||
vars:
|
|
||||||
service_name: "actual"
|
|
||||||
systemd_service_name: "actual"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
tags:
|
|
||||||
- actual
|
|
||||||
|
|
||||||
- name: Deploy nextcloud
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- nextcloud
|
|
||||||
vars:
|
|
||||||
service_name: "nextcloud"
|
|
||||||
systemd_service_name: "nextcloud-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
service_directories:
|
|
||||||
- db
|
|
||||||
- data
|
|
||||||
tags:
|
|
||||||
- nextcloud
|
|
||||||
|
|
||||||
- name: Deploy paperless
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- paperless
|
|
||||||
vars:
|
|
||||||
service_name: "paperless"
|
|
||||||
systemd_service_name: "paperless-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
service_directories:
|
|
||||||
- br
|
|
||||||
- db
|
|
||||||
- data
|
|
||||||
- media
|
|
||||||
- export
|
|
||||||
- consume
|
|
||||||
tags:
|
|
||||||
- paperless
|
|
||||||
|
|
||||||
- name: Deploy bookstack
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- bookstack
|
|
||||||
vars:
|
|
||||||
service_name: "bookstack"
|
|
||||||
systemd_service_name: "bookstack-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
service_directories:
|
|
||||||
- db
|
|
||||||
- data
|
|
||||||
tags:
|
|
||||||
- bookstack
|
|
||||||
|
|
||||||
- name: Deploy rustdesk
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- rustdesk
|
|
||||||
vars:
|
|
||||||
service_name: "rustdesk"
|
|
||||||
systemd_service_name: "rustdesk-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
service_directories:
|
|
||||||
- data
|
|
||||||
tags:
|
|
||||||
- rustdesk
|
|
||||||
|
|
||||||
- name: Deploy languagetool
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- languagetool
|
|
||||||
vars:
|
|
||||||
service_name: "languagetool"
|
|
||||||
systemd_service_name: "languagetool"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
service_directories:
|
|
||||||
- ngrams
|
|
||||||
tags:
|
|
||||||
- languagetool
|
|
||||||
|
|
||||||
- name: Deploy sgnarva
|
|
||||||
include_role:
|
|
||||||
name: rootless-podman-service
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- sgnarva
|
|
||||||
vars:
|
|
||||||
service_name: "sgnarva"
|
|
||||||
systemd_service_name: "sgnarva-pod"
|
|
||||||
quadlet_template_src: "./my_service_templates"
|
|
||||||
service_directories:
|
|
||||||
- sgnarvaweb
|
|
||||||
- sgnarvadb
|
|
||||||
tags:
|
|
||||||
- sgnarva
|
|
||||||
|
|
||||||
@ -1,13 +1,62 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256;podman_hosts
|
$ANSIBLE_VAULT;1.2;AES256;podman_hosts
|
||||||
34396465333337346339653661356338373861326337663939616531623866336233653963353739
|
34663362613164623866623535646637643134393861343463323666323930353635623931353964
|
||||||
6264653732373635336563333732303735653532393865350a313135343361633034623239643339
|
3033393864646661323066363964313164373432366138630a323932626361316339666361386564
|
||||||
31326238316333326166366638623963653635623533623833333862646462333363353066663434
|
30656431323730316262663163623462396134353633393438356366326265616533343363633336
|
||||||
6536343138643462320a393638643763633433363861326139326536663439633566386664393964
|
3430333963356332660a353039333564363739616635383535396365636131663637393961383364
|
||||||
37366533323633376436396431383231346438643136326138643565343239393734643662386232
|
66373734353338626133313233373063616237313933326335313861663232643935643430366337
|
||||||
31373630376164623663333361323531626165646236393732353031313636623434323931633434
|
30623439366563376564623239383035376332343334623764326662643430626231343131393831
|
||||||
33343834356237376264383064393135663435323134373561306166306561356431656434633834
|
33303737633430363964373630633261383630623363623939306536333434623964616661623861
|
||||||
66653039633833643930303331323236633532343731613137383835643338373364633834653264
|
66636239326364646639386564663936656265666330643963353932653264373932373437383838
|
||||||
34643861366665336638656261373531343233353735353435643431303835376635356331373437
|
36353462616537306632356262653038303138633238623534633233643432663162333062393831
|
||||||
38306537643730646131666665396466366161303165303539663438666461623335366532376666
|
66626135613865343635653133343735383265353534356137353734376536356465663636333833
|
||||||
34356161383031353939343531333062623064353865636437633436613334663866346163316664
|
38316539613261353631353266616565306533626239346139626439373933386361323061366164
|
||||||
32383134333464663133
|
32623236666337636239323566663263303839333731353332316563373436313365316234623763
|
||||||
|
38333134666531386439363535386537643830336133353233636266366666653935376166313762
|
||||||
|
64376131346562643565646436643765633731613434366265386433383639393364366238313663
|
||||||
|
61333164626430333462333634383161633764656134333030333861393566616633383438323066
|
||||||
|
34323033316163666665326330393061633533336564613632663539636237336437643239316464
|
||||||
|
37313338363731363635363337346565363631376132613665326239316136653939363734373035
|
||||||
|
61313236663739343330313466663533373434633365346336326363313230353564396466373133
|
||||||
|
32346433646666316130346630653062643564353061666466623830613461373134613664356134
|
||||||
|
61633836316264623536383636353064613465366263393465366430623132393432613961393761
|
||||||
|
37396531313361353436646563313433393836313831336164396130643235663534643037303064
|
||||||
|
37616135626366366661663233623436316563366465333663373132666465313539323737323133
|
||||||
|
63653636376136306531616561376363363231653564333131366534643339393566316130376537
|
||||||
|
32303265326165326334653965636561376536616439396639333736346536663462613031323030
|
||||||
|
32333565636235343435636238383232376263313364666231323262323439336261333137653132
|
||||||
|
32643362303763636137316365323434306430616230653064623538316533396235653932633865
|
||||||
|
33333938646536356538366531353361363135356634363238386365663963323032383839386166
|
||||||
|
66353932663037373235623931646533336266376634643337323232326264343633373139383533
|
||||||
|
63363330313138626331376462353433346637663139386466613465383832666264363430633038
|
||||||
|
35356262356563303531303937383864313239396563343162666535303566663131613665623062
|
||||||
|
37313964363132633962626631616531633434393961666462393636363637636266343961663164
|
||||||
|
36623231653135663938623238313337333533633231643161366262383935336264336639383165
|
||||||
|
32363465313761636639336532346333646337373337363764303435623266356564626132336537
|
||||||
|
63613062613135396233653261373638323162343563303137363965373232313230363436323562
|
||||||
|
34303032363630373436613838343834383535383030623466613961623330623536396136363366
|
||||||
|
66396230643130343436316434396465313939363037636263303938353735626437326535373537
|
||||||
|
38316361656639643337626330383437376638333033666566613764323432636663313433636236
|
||||||
|
39333732363666363762376365623435353832653738393239643839326335656431343438343562
|
||||||
|
30633861663339633261356433333866636430633531333632323065626465323264373465333731
|
||||||
|
61343336336262626666663538613931396536626439383735643836356131386136313938393062
|
||||||
|
32343263366430396635646666323737633130363035396136333633323339636666316438326166
|
||||||
|
34346334326565663163653661643561656338666432393538633065303961333439366263633430
|
||||||
|
66663161326463346465643865346164356135386637393730396130636233346565333839336365
|
||||||
|
61346561663239353964613163656333323265306431373036623734633861633232353561326336
|
||||||
|
62643737633537353065353463306662313739313734376337656132313434666366343132306230
|
||||||
|
33353461343933626232663030386530383363616161396536663234326432623465353930376437
|
||||||
|
31353939376365386266376135636133316464366365313537356565333564386633376366326232
|
||||||
|
31323235646134373133346338333564616533643432616264383432346465363965383764616361
|
||||||
|
38303239616530306132306131353062373761326663343264343961353833343732373435613834
|
||||||
|
34346462343037643663376230366465616161376632336564393463633535643462326132646538
|
||||||
|
35376333316261613363323865386633663862393365313139336234613435646264376366636362
|
||||||
|
33373031643961393935333937396564306164343138623737366132373737396234306332616463
|
||||||
|
37356330323064626261616665376133666535333336323338653831393135333436336631343461
|
||||||
|
37386164656461623330613035373234613365326338653338306639613430653638363030356533
|
||||||
|
37623234383132323333343662346332663436326533613332323731613834646431336562383562
|
||||||
|
30663830313166613536623432636437356266363662306335386235653539663033323034313362
|
||||||
|
38336564313538643238343635323534646264653537356631643031346432396363633338363865
|
||||||
|
34393135363832303033346465316162656662313431336633346135666261303331373562663563
|
||||||
|
62633833303261323432333138353662343430356231663437353631386163333633643961366139
|
||||||
|
34353864626137656333663530376231346535316332636462616338336538313333663263646138
|
||||||
|
3230
|
||||||
|
|||||||
@ -7,6 +7,4 @@
|
|||||||
- rootless_host
|
- rootless_host
|
||||||
- traefik
|
- traefik
|
||||||
- backup
|
- backup
|
||||||
|
- services
|
||||||
#- name: deploy services
|
|
||||||
# import_playbook: deploy_services.yml
|
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Bookstack database
|
|
||||||
|
|
||||||
[Container]
|
|
||||||
ContainerName=bookstack-db
|
|
||||||
Image=lscr.io/linuxserver/mariadb:11.4.5
|
|
||||||
Volume=/var/vol/bookstack/db:/config:Z
|
|
||||||
Environment=PUID=1000
|
|
||||||
Environment=PGID=1000
|
|
||||||
Environment=TZ=Europe/Berlin
|
|
||||||
Environment=MYSQL_ROOT_PASSWORD=<REDACTED>
|
|
||||||
Environment=MYSQL_DATABASE=<REDACTED>
|
|
||||||
Environment=MYSQL_USER=<REDACTED>
|
|
||||||
Environment=MYSQL_PASSWORD=<REDACTED>
|
|
||||||
AutoUpdate=registry
|
|
||||||
Pod=bookstack.pod
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=SGNarva Wordpress database
|
|
||||||
|
|
||||||
[Container]
|
|
||||||
ContainerName=sgnarva-db
|
|
||||||
Image=docker.io/mysql:8
|
|
||||||
Volume=/var/vol/sgnarva/sgnarvadb:/var/lib/mysql:Z
|
|
||||||
Environment=MYSQL_ROOT_PASSWORD=REDACTED
|
|
||||||
Environment=MYSQL_DATABASE=REDACTED
|
|
||||||
Environment=MYSQL_USER=REDACTED
|
|
||||||
Environment=MYSQL_PASSWORD=REDACTED
|
|
||||||
AutoUpdate=registry
|
|
||||||
Pod=sgnarva.pod
|
|
||||||
2
ansible/roles/services/defaults/main.yml
Normal file
2
ansible/roles/services/defaults/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
btrfs_base_path: "/var/vol"
|
||||||
@ -8,9 +8,12 @@
|
|||||||
mode: '0755'
|
mode: '0755'
|
||||||
|
|
||||||
- name: Copy Quadlet files to the user's systemd directory
|
- name: Copy Quadlet files to the user's systemd directory
|
||||||
ansible.builtin.copy:
|
with_fileglob: "../templates/{{ service_name }}/*.j2"
|
||||||
src: "{{ quadlet_template_src }}/{{ service_name }}/"
|
loop_control:
|
||||||
dest: "/home/{{ service_name }}/.config/containers/systemd/"
|
loop_var: template_path
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{{ template_path }}"
|
||||||
|
dest: "/home/{{ service_name }}/.config/containers/systemd/{{ template_path | basename | regex_replace('.j2', '') }}"
|
||||||
owner: "{{ service_name }}"
|
owner: "{{ service_name }}"
|
||||||
group: "{{ service_name }}"
|
group: "{{ service_name }}"
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
@ -1,10 +1,4 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure Btrfs base path exists
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ btrfs_base_path }}"
|
|
||||||
state: directory
|
|
||||||
mode: '0755'
|
|
||||||
|
|
||||||
- name: Create Btrfs subvolume
|
- name: Create Btrfs subvolume
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "btrfs subvolume create {{ btrfs_base_path }}/{{ service_name }}"
|
cmd: "btrfs subvolume create {{ btrfs_base_path }}/{{ service_name }}"
|
||||||
@ -1,16 +1,20 @@
|
|||||||
---
|
---
|
||||||
- name: Check if service directories exist
|
- name: Check if service directories exist
|
||||||
ansible.builtin.stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ btrfs_base_path }}/{{ service_name }}/{{ item }}"
|
path: "{{ btrfs_base_path }}/{{ service_name }}/{{ service_dir }}"
|
||||||
loop: "{{ service_directories }}"
|
loop: "{{ service_directories }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: service_dir
|
||||||
register: directory_stats
|
register: directory_stats
|
||||||
|
|
||||||
- name: Create service directories in BTRFS subvolume (only if they don't exist)
|
- name: Create service directories in BTRFS subvolume (only if they don't exist)
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ btrfs_base_path }}/{{ service_name }}/{{ item.item }}"
|
path: "{{ btrfs_base_path }}/{{ service_name }}/{{ results.item }}"
|
||||||
state: directory
|
state: directory
|
||||||
owner: "{{ service_name }}"
|
owner: "{{ service_name }}"
|
||||||
group: "{{ service_name }}"
|
group: "{{ service_name }}"
|
||||||
mode: '0755'
|
mode: '0755'
|
||||||
loop: "{{ directory_stats.results }}"
|
loop: "{{ directory_stats.results }}"
|
||||||
when: not item.stat.exists
|
loop_control:
|
||||||
|
loop_var: results
|
||||||
|
when: not results.stat.exists
|
||||||
48
ansible/roles/services/tasks/main.yml
Normal file
48
ansible/roles/services/tasks/main.yml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
- name: Initial setup for rootless podman services
|
||||||
|
include_tasks: setup.yml
|
||||||
|
|
||||||
|
- name: Create users
|
||||||
|
loop: "{{ services | dict2items }}"
|
||||||
|
include_tasks: create_user.yml
|
||||||
|
vars:
|
||||||
|
service_name: "{{ item.key }}"
|
||||||
|
|
||||||
|
- name: Ensure Btrfs base path exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ btrfs_base_path }}"
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Create Btrfs subvolume
|
||||||
|
loop: "{{ services | dict2items }}"
|
||||||
|
include_tasks: create_btrfs_subvolume.yml
|
||||||
|
vars:
|
||||||
|
service_name: "{{ item.key }}"
|
||||||
|
|
||||||
|
- name: Create service directories
|
||||||
|
loop: "{{ services | dict2items }}"
|
||||||
|
include_tasks: create_service_directories.yml
|
||||||
|
when: " item.value.service_directories is defined and item.value.service_directories | length > 0"
|
||||||
|
vars:
|
||||||
|
service_name: "{{ item.key }}"
|
||||||
|
service_directories: "{{ item.value.service_directories }}"
|
||||||
|
|
||||||
|
- name: Enable linger for the user
|
||||||
|
loop: "{{ services | dict2items }}"
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "loginctl enable-linger {{ item.key }}"
|
||||||
|
|
||||||
|
- name: Copy Quadlet files
|
||||||
|
loop: "{{ services | dict2items }}"
|
||||||
|
include_tasks: copy_quadlet_files.yml
|
||||||
|
vars:
|
||||||
|
service_name: "{{ item.key }}"
|
||||||
|
|
||||||
|
- name: Enable and start main service
|
||||||
|
loop: "{{ services | dict2items }}"
|
||||||
|
include_tasks: enable_service.yml
|
||||||
|
vars:
|
||||||
|
service_name: "{{ item.key }}"
|
||||||
|
systemd_service_name: "{{ item.value.systemd_service_name }}"
|
||||||
|
force_systemd_restart: "{{ item.value.force_systemd_restart | default(false) }}"
|
||||||
19
ansible/roles/services/tasks/setup.yml
Normal file
19
ansible/roles/services/tasks/setup.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
- name: Check if systemd-container is installed
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "zypper se -i systemd-container"
|
||||||
|
register: systemd_container_installed
|
||||||
|
ignore_errors: yes
|
||||||
|
- name: Check if podman is installed
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "zypper se -i podman"
|
||||||
|
register: podman_installed
|
||||||
|
ignore_errors: yes
|
||||||
|
- name: Install software if not installed
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "transactional-update --non-interactive pkg in systemd-container podman"
|
||||||
|
become: yes
|
||||||
|
when: systemd_container_installed.rc != 0 or podman_installed.rc != 0
|
||||||
|
register: software_installed
|
||||||
|
- name: Reboot if software was installed
|
||||||
|
ansible.builtin.reboot:
|
||||||
|
when: software_installed.changed
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Bookstack database
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
ContainerName=bookstack-db
|
||||||
|
Image=lscr.io/linuxserver/mariadb:11.4.5
|
||||||
|
Volume=/var/vol/bookstack/db:/config:Z
|
||||||
|
Environment=PUID=1000
|
||||||
|
Environment=PGID=1000
|
||||||
|
Environment=TZ=Europe/Berlin
|
||||||
|
Environment=MYSQL_ROOT_PASSWORD={{ service_secrets.bookstack.mysql_root_pw }}
|
||||||
|
Environment=MYSQL_DATABASE={{ service_secrets.bookstack.mysql_database }}
|
||||||
|
Environment=MYSQL_USER={{ service_secrets.bookstack.mysql_user }}
|
||||||
|
Environment=MYSQL_PASSWORD={{ service_secrets.bookstack.mysql_pw }}
|
||||||
|
AutoUpdate=registry
|
||||||
|
Pod=bookstack.pod
|
||||||
@ -12,11 +12,11 @@ Environment=APP_URL=https://bookstack.rohrschacht.de
|
|||||||
# APP_KEY must be a unique key. Generate your own by running
|
# APP_KEY must be a unique key. Generate your own by running
|
||||||
# docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
|
# docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
|
||||||
# You should keep the "base64:" part for the option value.
|
# You should keep the "base64:" part for the option value.
|
||||||
Environment=APP_KEY=<REDACTED>
|
Environment=APP_KEY={{ service_secrets.bookstack.app_key }}
|
||||||
Environment=DB_HOST=localhost
|
Environment=DB_HOST=127.0.0.1
|
||||||
Environment=DB_PORT=3306
|
Environment=DB_PORT=3306
|
||||||
Environment=DB_DATABASE=<REDACTED>
|
Environment=DB_DATABASE={{ service_secrets.bookstack.mysql_database }}
|
||||||
Environment=DB_USERNAME=<REDACTED>
|
Environment=DB_USERNAME={{ service_secrets.bookstack.mysql_user }}
|
||||||
Environment=DB_PASSWORD=<REDACTED>
|
Environment=DB_PASSWORD={{ service_secrets.bookstack.mysql_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=bookstack.pod
|
Pod=bookstack.pod
|
||||||
@ -7,7 +7,7 @@ Image=docker.io/postgres:14
|
|||||||
Volume=/var/vol/gitea/db:/var/lib/postgresql/data:Z
|
Volume=/var/vol/gitea/db:/var/lib/postgresql/data:Z
|
||||||
Environment=LANG=en_US.utf8
|
Environment=LANG=en_US.utf8
|
||||||
Environment=PGDATA=/var/lib/postgresql/data/pgdata
|
Environment=PGDATA=/var/lib/postgresql/data/pgdata
|
||||||
Environment=POSTGRES_USER=<REDACTED>
|
Environment=POSTGRES_USER={{ service_secrets.gitea.pg_user }}
|
||||||
Environment=POSTGRES_PASSWORD=<REDACTED>
|
Environment=POSTGRES_PASSWORD={{ service_secrets.gitea.pg_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=gitea.pod
|
Pod=gitea.pod
|
||||||
@ -9,8 +9,8 @@ Environment=USER_UID=1000
|
|||||||
Environment=USER_GID=1000
|
Environment=USER_GID=1000
|
||||||
Environment=GITEA__database__DB_TYPE=postgres
|
Environment=GITEA__database__DB_TYPE=postgres
|
||||||
Environment=GITEA__database__DB_HOST=127.0.0.1:5432
|
Environment=GITEA__database__DB_HOST=127.0.0.1:5432
|
||||||
Environment=GITEA__database__DB_NAME=<REDACTED>
|
Environment=GITEA__database__DB_NAME={{ service_secrets.gitea.pg_db }}
|
||||||
Environment=GITEA__database__DB_USER=<REDACTED>
|
Environment=GITEA__database__DB_USER={{ service_secrets.gitea.pg_user }}
|
||||||
Environment=GITEA__database__DB_PASSWD=<REDACTED>
|
Environment=GITEA__database__DB_PASSWD={{ service_secrets.gitea.pg_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=gitea.pod
|
Pod=gitea.pod
|
||||||
@ -7,7 +7,7 @@ Image=docker.io/postgres:12
|
|||||||
Volume=/var/vol/nextcloud/db:/var/lib/postgresql/data:Z
|
Volume=/var/vol/nextcloud/db:/var/lib/postgresql/data:Z
|
||||||
Environment=LANG=en_US.utf8
|
Environment=LANG=en_US.utf8
|
||||||
Environment=PGDATA=/var/lib/postgresql/data/pgdata
|
Environment=PGDATA=/var/lib/postgresql/data/pgdata
|
||||||
Environment=POSTGRES_USER=<REDACTED>
|
Environment=POSTGRES_USER={{ service_secrets.nextcloud.pg_user }}
|
||||||
Environment=POSTGRES_PASSWORD=<REDACTED>
|
Environment=POSTGRES_PASSWORD={{ service_secrets.nextcloud.pg_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=nextcloud.pod
|
Pod=nextcloud.pod
|
||||||
@ -9,8 +9,8 @@ Environment=USER_UID=1000
|
|||||||
Environment=USER_GID=1000
|
Environment=USER_GID=1000
|
||||||
Environment=PHP_MEMORY_LIMIT=4G
|
Environment=PHP_MEMORY_LIMIT=4G
|
||||||
Environment=POSTGRES_HOST=127.0.0.1:5432
|
Environment=POSTGRES_HOST=127.0.0.1:5432
|
||||||
Environment=POSTGRES_DB=<REDACTED>
|
Environment=POSTGRES_DB={{ service_secrets.nextcloud.pg_db }}
|
||||||
Environment=POSTGRES_USER=<REDACTED>
|
Environment=POSTGRES_USER={{ service_secrets.nextcloud.pg_user }}
|
||||||
Environment=POSTGRES_PASSWORD=<REDACTED>
|
Environment=POSTGRES_PASSWORD={{ service_secrets.nextcloud.pg_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=nextcloud.pod
|
Pod=nextcloud.pod
|
||||||
@ -6,8 +6,8 @@ ContainerName=paperless-db
|
|||||||
Image=docker.io/postgres:17
|
Image=docker.io/postgres:17
|
||||||
Volume=/var/vol/paperless/db:/var/lib/postgresql/data:Z
|
Volume=/var/vol/paperless/db:/var/lib/postgresql/data:Z
|
||||||
Environment=LANG=en_US.utf8
|
Environment=LANG=en_US.utf8
|
||||||
Environment=POSTGRES_DB=<REDACTED>
|
Environment=POSTGRES_DB={{ service_secrets.paperless.pg_db }}
|
||||||
Environment=POSTGRES_USER=<REDACTED>
|
Environment=POSTGRES_USER={{ service_secrets.paperless.pg_user }}
|
||||||
Environment=POSTGRES_PASSWORD=<REDACTED>
|
Environment=POSTGRES_PASSWORD={{ service_secrets.paperless.pg_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=paperless.pod
|
Pod=paperless.pod
|
||||||
@ -9,16 +9,16 @@ Volume=/var/vol/paperless/media:/usr/src/paperless/media:Z
|
|||||||
Volume=/var/vol/paperless/export:/usr/src/paperless/export:Z
|
Volume=/var/vol/paperless/export:/usr/src/paperless/export:Z
|
||||||
Volume=/var/vol/paperless/consume:/usr/src/paperless/consume:Z
|
Volume=/var/vol/paperless/consume:/usr/src/paperless/consume:Z
|
||||||
Environment=PAPERLESS_URL=https://paperless.rohrschacht.de
|
Environment=PAPERLESS_URL=https://paperless.rohrschacht.de
|
||||||
Environment=PAPERLESS_SECRET_KEY=<REDACTED>
|
Environment=PAPERLESS_SECRET_KEY={{ service_secrets.paperless.secret_key }}
|
||||||
Environment=PAPERLESS_TIME_ZONE=Europe/Berlin
|
Environment=PAPERLESS_TIME_ZONE=Europe/Berlin
|
||||||
Environment=PAPERLESS_OCR_LANGUAGE=deu
|
Environment=PAPERLESS_OCR_LANGUAGE=deu
|
||||||
Environment=PAPERLESS_OCR_LANGUAGES=eng
|
Environment=PAPERLESS_OCR_LANGUAGES=eng
|
||||||
Environment=PAPERLESS_ADMIN_USER=<REDACTED>
|
Environment=PAPERLESS_ADMIN_USER={{ service_secrets.paperless.admin_user }}
|
||||||
Environment=PAPERLESS_ADMIN_PASSWORD=<REDACTED>
|
Environment=PAPERLESS_ADMIN_PASSWORD={{ service_secrets.paperless.admin_pw }}
|
||||||
Environment=PAPERLESS_REDIS=redis://127.0.0.1:6379
|
Environment=PAPERLESS_REDIS=redis://127.0.0.1:6379
|
||||||
Environment=PAPERLESS_DBHOST=127.0.0.1
|
Environment=PAPERLESS_DBHOST=127.0.0.1
|
||||||
Environment=PAPERLESS_DBNAME=<REDACTED>
|
Environment=PAPERLESS_DBNAME={{ service_secrets.paperless.pg_db }}
|
||||||
Environment=PAPERLESS_DBUSER=<REDACTED>
|
Environment=PAPERLESS_DBUSER={{ service_secrets.paperless.pg_user }}
|
||||||
Environment=PAPERLESS_DBPASS=<REDACTED>
|
Environment=PAPERLESS_DBPASS={{ service_secrets.paperless.pg_pw }}
|
||||||
AutoUpdate=registry
|
AutoUpdate=registry
|
||||||
Pod=paperless.pod
|
Pod=paperless.pod
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=SGNarva Wordpress database
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
ContainerName=sgnarva-db
|
||||||
|
Image=docker.io/mysql:8
|
||||||
|
Volume=/var/vol/sgnarva/sgnarvadb:/var/lib/mysql:Z
|
||||||
|
Environment=MYSQL_ROOT_PASSWORD={{ service_secrets.sgnarva.mysql_root_pw }}
|
||||||
|
Environment=MYSQL_DATABASE={{ service_secrets.sgnarva.mysql_db }}
|
||||||
|
Environment=MYSQL_USER={{ service_secrets.sgnarva.mysql_user }}
|
||||||
|
Environment=MYSQL_PASSWORD={{ service_secrets.sgnarva.mysql_pw }}
|
||||||
|
AutoUpdate=registry
|
||||||
|
Pod=sgnarva.pod
|
||||||
48
ansible/roles/services/vars/main.yml
Normal file
48
ansible/roles/services/vars/main.yml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
systemd_service_name: "traefik"
|
||||||
|
wekantesting:
|
||||||
|
systemd_service_name: "null"
|
||||||
|
wekan:
|
||||||
|
systemd_service_name: "null"
|
||||||
|
gitea:
|
||||||
|
systemd_service_name: "gitea-pod"
|
||||||
|
mumble:
|
||||||
|
systemd_service_name: "mumble"
|
||||||
|
bitwarden:
|
||||||
|
systemd_service_name: "bitwarden"
|
||||||
|
actual:
|
||||||
|
systemd_service_name: "actual"
|
||||||
|
nextcloud:
|
||||||
|
systemd_service_name: "nextcloud-pod"
|
||||||
|
services_directories:
|
||||||
|
- db
|
||||||
|
- data
|
||||||
|
paperless:
|
||||||
|
systemd_service_name: "paperless-pod"
|
||||||
|
services_directories:
|
||||||
|
- br
|
||||||
|
- db
|
||||||
|
- data
|
||||||
|
- media
|
||||||
|
- export
|
||||||
|
- consume
|
||||||
|
bookstack:
|
||||||
|
systemd_service_name: "bookstack-pod"
|
||||||
|
services_directories:
|
||||||
|
- db
|
||||||
|
- data
|
||||||
|
rustdesk:
|
||||||
|
systemd_service_name: "rustdesk-pod"
|
||||||
|
services_directories:
|
||||||
|
- data
|
||||||
|
languagetool:
|
||||||
|
systemd_service_name: "languagetool"
|
||||||
|
service_directories:
|
||||||
|
- ngrams
|
||||||
|
sgnarva:
|
||||||
|
systemd_service_name: "sgnarva-pod"
|
||||||
|
services_directories:
|
||||||
|
- sgnarvaweb
|
||||||
|
- sgnarvadb
|
||||||
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
service_name: "default_service"
|
|
||||||
systemd_service_name: "default_service"
|
|
||||||
btrfs_base_path: "/var/vol"
|
|
||||||
quadlet_template_src: "./templates"
|
|
||||||
force_systemd_restart: false
|
|
||||||
service_directories: []
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create user and group
|
|
||||||
include_tasks: create_user.yml
|
|
||||||
|
|
||||||
- name: Create Btrfs subvolume
|
|
||||||
include_tasks: create_btrfs_subvolume.yml
|
|
||||||
|
|
||||||
- name: Create service directories
|
|
||||||
include_tasks: create_service_directories.yml
|
|
||||||
when: service_directories | length > 0
|
|
||||||
|
|
||||||
- name: Enable linger for the user
|
|
||||||
include_tasks: enable_linger.yml
|
|
||||||
|
|
||||||
- name: Copy Quadlet files
|
|
||||||
include_tasks: copy_quadlet_files.yml
|
|
||||||
|
|
||||||
- name: Enable and start main service
|
|
||||||
include_tasks: enable_service.yml
|
|
||||||
Loading…
Reference in New Issue
Block a user