2026-AUG-27

This commit is contained in:
il
2026-08-27 09:14:49 +09:00
parent 8bf9d92f7b
commit ea8dfc8c20
15 changed files with 252 additions and 39 deletions
+10 -1
View File
@@ -178,6 +178,15 @@ services:
dependency:
web: "app-public"
db: "postgresql"
linkwarden:
domain:
public: "link"
internal: "link.app"
ports:
http: "3005"
dependency:
web: "app-public"
db: "postgresql"
gitea:
domain:
public: "gitea"
@@ -329,7 +338,6 @@ services:
web: "app-public"
db: "postgresql"
version:
packages:
sops: "3.13.2"
@@ -377,3 +385,4 @@ version:
romm: "5.1.0"
tandoor: "2.6.13"
bookstack: "26.5.3"
linkwarden: "v2.16.1"
+6 -6
View File
@@ -35,8 +35,6 @@ hardware:
mount_opts: ""
data:
serials:
- "WMC6N0E617S8"
- "PN1134P6HVTL0W"
- "PN1138P2GH354H"
- "PN2131P6GJKSMP"
fs:
@@ -50,12 +48,14 @@ hardware:
- "degraded"
- "nofail"
btrfs:
data_profile: "raid10"
metadata_profile: "raid10"
min_devices: 4
data_profile: "raid1"
metadata_profile: "raid1"
min_devices: 2
backup:
serials:
- "6261S5G4S75H"
- "PN1134P6HVTL0W"
# Spare
# - "WMC6N0E617S8"
fs:
type: "btrfs"
label: "BACKUP"
+1 -1
View File
@@ -25,7 +25,7 @@ vm:
data_storage:
name: "vdb"
pool: "data"
size: 3.5
size: 1.75
lan_mac: "0a:49:6e:4d:03:00"
lan_net: "lan-net"
lan_group: "vlan10-access"
+1 -1
View File
@@ -21,7 +21,7 @@ vm:
data_storage:
name: "vdb"
pool: "backup"
size: 3.5
size: 1.75
lan_mac: "0a:49:6e:4d:09:00"
lan_net: "lan-net"
lan_group: "vlan10-access"
+8
View File
@@ -298,6 +298,14 @@
tags: ["site", "romm"]
tags: ["site", "romm"]
- name: Set linkwarden
ansible.builtin.include_role:
name: "app"
tasks_from: "services/set_linkwarden"
apply:
tags: ["site", "linkwarden"]
tags: ["site", "linkwarden"]
- name: Set homepage
ansible.builtin.include_role:
name: "app"
+1
View File
@@ -178,6 +178,7 @@
- python3-apt
- python3-libvirt
- python3-lxml
- rsync
state: "present"
become: true
when: "'init' is not in ansible_run_tags"
+11
View File
@@ -208,3 +208,14 @@
changed_when: false
listen: "notification_restart_bookstack"
ignore_errors: true # noqa: ignore-errors
- name: Restart linkwarden
ansible.builtin.systemd:
name: "linkwarden.service"
state: "restarted"
enabled: true
scope: "user"
daemon_reload: true
changed_when: false
listen: "notification_restart_linkwarden"
ignore_errors: true # noqa: ignore-errors
@@ -0,0 +1,87 @@
---
- name: Create linkwarden directory
ansible.builtin.file:
path: "{{ node['home_path'] }}/{{ item }}"
state: "directory"
owner: "{{ ansible_user }}"
group: "{{ node['group'] }}"
mode: "0770"
loop:
- "data/containers/linkwarden"
- "data/containers/linkwarden/data"
- "containers/linkwarden"
- "containers/linkwarden/ssl"
- name: Deploy root certificate
ansible.builtin.copy:
content: |
{{ hostvars['console']['ca']['root']['crt'] }}
dest: "{{ node['home_path'] }}/containers/linkwarden/ssl/{{ root_cert_filename }}"
owner: "{{ ansible_user }}"
group: "{{ node['group'] }}"
mode: "0440"
become: true
notify: "notification_restart_linkwarden"
no_log: true
- name: Register secret value to podman secret
containers.podman.podman_secret:
name: "{{ item.name }}"
data: "{{ item.value }}"
state: "present"
force: true
loop:
- name: "LINKWARDEN_SECRET_KEY"
value: "{{ hostvars['console']['linkwarden']['secret_key'] }}"
- name: "LINKWARDEN_OIDC_CLIENT_SECRET"
value: "{{ hostvars['console']['linkwarden']['oidc']['secret'] }}"
- name: "LINKWARDEN_DATABASE_URL"
value: "postgresql://linkwarden:{{ hostvars['console']['postgresql']['password']['linkwarden'] | urlencode | replace('/', '%2F') }}\
@{{ services['postgresql']['domain']['internal'] }}.{{ domain['internal'] }}/linkwarden_db?sslmode=require&\
sslcert=/etc/ssl/linkwarden/{{ root_cert_filename }}&sslaccept=strict"
notify: "notification_restart_linkwarden"
no_log: true
- name: Pull image
containers.podman.podman_image:
name: "ghcr.io/linkwarden/linkwarden"
tag: "{{ version['containers']['linkwarden'] }}"
state: "present"
pull: true
- name: Deploy container file
ansible.builtin.template:
src: "{{ hostvars['console']['node']['config_path'] }}/services/containers/app/linkwarden/linkwarden.container.j2"
dest: "{{ node['home_path'] }}/.config/containers/systemd/linkwarden.container"
owner: "{{ ansible_user }}"
group: "{{ node['group'] }}"
mode: "0644"
notify: "notification_restart_linkwarden"
- name: Enable linkwarden.service
ansible.builtin.systemd:
name: "linkwarden.service"
state: "started"
enabled: true
daemon_reload: true
scope: "user"
- name: Check container archive images
ansible.builtin.stat:
path: "{{ node['home_path'] }}/archives/containers/ghcr.io_linkwarden_linkwarden_{{ version['containers']['linkwarden'] }}.tar"
register: container_archive_images
- name: Save container archive images
containers.podman.podman_save:
image:
- "ghcr.io/linkwarden/linkwarden:{{ version['containers']['linkwarden'] }}"
dest: "{{ node['home_path'] }}/archives/containers/ghcr.io_linkwarden_linkwarden_{{ version['containers']['linkwarden'] }}.tar"
format: "oci-archive"
force: false
when: not container_archive_images.stat.exists
- name: Fetch container archive images
ansible.builtin.fetch:
src: "{{ node['home_path'] }}/archives/containers/ghcr.io_linkwarden_linkwarden_{{ version['containers']['linkwarden'] }}.tar"
dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/"
flat: true
@@ -58,7 +58,7 @@
- "containers/nextcloud/ini"
become: true
- name: Check data directory empty
- name: Check .init file
ansible.builtin.stat:
path: "{{ node['home_path'] }}/data/containers/nextcloud/.init"
register: "is_nextcloud_init"
+5 -5
View File
@@ -28,10 +28,10 @@
- name: Check disk number
ansible.builtin.fail:
msg: "Below 4 disks for RAID10, found {{ data_disk_path.stdout_lines | length }}"
msg: "Below 2 disks for RAID, found {{ data_disk_path.stdout_lines | length }}"
when: (data_disk_path.stdout_lines | length) < hardware['disk']['data']['fs']['btrfs']['min_devices']
- name: Set btrfs raid10 volume
- name: Set data btrfs volume
ansible.builtin.shell: |
mkfs.btrfs -f \
-L {{ hardware['disk']['data']['fs']['label'] }} \
@@ -54,7 +54,7 @@
mode: "0711"
become: true
- name: Mount btrfs raid10 volume
- name: Mount data btrfs volume
ansible.posix.mount:
path: "{{ hardware['disk']['data']['fs']['mount_point'] }}"
src: "LABEL={{ hardware['disk']['data']['fs']['label'] }}"
@@ -92,7 +92,7 @@
failed_when: false
register: "is_backup_disk_fs"
- name: Set btrfs volume
- name: Set backup btrfs volume
ansible.builtin.shell: |
mkfs.btrfs -f \
-L {{ hardware['disk']['backup']['fs']['label'] }} \
@@ -115,7 +115,7 @@
mode: "0711"
become: true
- name: Mount btrfs volume
- name: Mount backup btrfs volume
ansible.posix.mount:
path: "{{ hardware['disk']['backup']['fs']['mount_point'] }}"
src: "LABEL={{ hardware['disk']['backup']['fs']['label'] }}"