From 20d5ecbeb3150bf95cf6c498db65aacb659d378d Mon Sep 17 00:00:00 2001 From: Kyattsukuro Date: Sun, 27 Sep 2026 15:49:28 +0200 Subject: [PATCH] untested: added storage_mount role --- inventory/host_vars/DebianMain.yml | 97 ++++++++++++++++++++ inventory/hosts.yaml | 2 + roles/base_server/tasks/main.yml | 11 +-- roles/base_server/templates/.bashrc.j2 | 2 + roles/storage_mount/README.md | 1 + roles/storage_mount/defaults/main.yml | 11 +++ roles/storage_mount/handlers/main.yml | 9 ++ roles/storage_mount/meta/main.yml | 20 ++++ roles/storage_mount/tasks/main.yml | 16 ++++ roles/storage_mount/templates/nfs.service.j2 | 8 ++ 10 files changed, 170 insertions(+), 7 deletions(-) create mode 100644 inventory/host_vars/DebianMain.yml create mode 100644 roles/base_server/templates/.bashrc.j2 create mode 100644 roles/storage_mount/README.md create mode 100644 roles/storage_mount/defaults/main.yml create mode 100644 roles/storage_mount/handlers/main.yml create mode 100644 roles/storage_mount/meta/main.yml create mode 100644 roles/storage_mount/tasks/main.yml create mode 100644 roles/storage_mount/templates/nfs.service.j2 diff --git a/inventory/host_vars/DebianMain.yml b/inventory/host_vars/DebianMain.yml new file mode 100644 index 0000000..cc6393c --- /dev/null +++ b/inventory/host_vars/DebianMain.yml @@ -0,0 +1,97 @@ +_speedup_bitwarden_hetzner_record: "{{ bitwarden_records_urmel_services['Hetzner'] }}" +_speedup_bitwarden_hetzner_fields: "{{ dict(_speedup_bitwarden_hetzner_record.fields|map(attribute='name')|zip(_speedup_bitwarden_hetzner_record.fields|map(attribute='value'))) }}" + +_speedup_noreply_mail_record: "{{ bitwarden_records_urmel_services['Noreply Mail'] }}" +_speedup_noreply_mail_fields: "{{ dict(_speedup_noreply_mail_record.fields|map(attribute='name')|zip(_speedup_noreply_mail_record.fields|map(attribute='value'))) }}" + +_speedup_nextcloud_record: "{{ bitwarden_records_urmel_services['Nextcloud'] }}" +_speedup_nextcloud_fields: "{{ dict(_speedup_nextcloud_record.fields|map(attribute='name')|zip(_speedup_nextcloud_record.fields|map(attribute='value'))) }}" + +ddns_override: + domains: + - provider: "hetznercloud" + domain: "urmel.de" + ip_version: "ipv4" + token: "{{ _speedup_bitwarden_hetzner_fields.api_token }}" + - provider: "hetznercloud" + domain: "urmel.de" + ip_version: "ipv6" + token: "{{ _speedup_bitwarden_hetzner_fields.api_token }}" + - provider: "hetznercloud" + domain: "*.urmel.de" + ip_version: "ipv4" + token: "{{ _speedup_bitwarden_hetzner_fields.api_token }}" + - provider: "hetznercloud" + domain: "*.urmel.de" + ip_version: "ipv6" + token: "{{ _speedup_bitwarden_hetzner_fields.api_token }}" + +traefik_override: + expose_additional_ports: + - 22 + include_external_services: + homeassistant: + url: 172.24.2.4 + + + main_domain: "urmel.de" + http_port: "80" + https_port: "443" + + duckdns_api_token: "{{ (bitwarden_records_urmel_services['DuckDns'].fields | selectattr('name', '==', 'token') | first).value }}" + hetzner_api_token: "{{ _speedup_bitwarden_hetzner_fields.api_token }}" + basic_auth_password: "{{ (bitwarden_records_urmel_services['Traefik'].fields | selectattr('name', '==', 'auth_string') | first).value }}" + +authentik_override: + url: "auth.urmel.de" + db_password: "{{ (bitwarden_records_urmel_services['Authentik'].fields | selectattr('name', '==', 'db_password') | first).value }}" + secret: "{{ (bitwarden_records_urmel_services['Authentik'].fields | selectattr('name', '==', 'secret') | first).value }}" + mail: + host: "{{ _speedup_noreply_mail_fields.smtp_host }}" + user: "{{ _speedup_noreply_mail_fields.address }}" + password: "{{ _speedup_noreply_mail_fields.password }}" + radius: + enabled: false + + +nextcloud_override: + url: "nextcloud.urmel.de" + data_path: "/mnt/nextcloud" + db_password: "{{ _speedup_nextcloud_fields.db_password }}" + secret: "{{ _speedup_nextcloud_fields.secret }}" + secret_salt: "{{ _speedup_nextcloud_fields.salt }}" + + networkmount: + host: "217.100.0.2" + host_path: "/mnt/Main/nextcloudData" + args: "rw,noatime,tcp" + + mail: + host: "{{ _speedup_noreply_mail_fields.smtp_host }}" + address: "{{ _speedup_noreply_mail_fields.address }}" + password: "{{ _speedup_noreply_mail_fields.password }}" + + oidc: + issuer: "https://auth.urmel.de/application/o/nextcloud/.well-known/openid-configuration" + client_id: "{{ _speedup_nextcloud_fields.oidc_client_id }}" + client_secret: "{{ _speedup_nextcloud_fields.oidc_client_secret }}" + + + collabora: + url: "collabora.urmel.de" + password: "{{ _speedup_nextcloud_fields.collabora_password }}" + drawio: + url: "drawio.urmel.de" + +vaultwarden_override: + url: "vaultwarden.urmel.de" + admin_token: "{{ (bitwarden_records_urmel_services['Vaultwarden'].fields | selectattr('name', '==', 'admin_token') | first).value }}" + oidc: + issuer: "" + client_id: "{{ (bitwarden_records_urmel_services['Vaultwarden'].fields | selectattr('name', '==', 'oidc_client_id') | first).value }}" + client_secret: "{{ (bitwarden_records_urmel_services['Vaultwarden'].fields | selectattr('name', '==', 'oidc_client_secret') | first).value }}" + + mail: + host: "{{ _speedup_noreply_mail_fields.smtp_host }}" + user: "{{ _speedup_noreply_mail_fields.address }}" + password: "{{ _speedup_noreply_mail_fields.password }}" diff --git a/inventory/hosts.yaml b/inventory/hosts.yaml index b0eb439..3942d76 100644 --- a/inventory/hosts.yaml +++ b/inventory/hosts.yaml @@ -4,3 +4,5 @@ all: hosts: beDebianMain: ansible_host: 192.168.250.2 + DebianMain: + ansible_host: 172.24.2.10 diff --git a/roles/base_server/tasks/main.yml b/roles/base_server/tasks/main.yml index 504052c..805c60a 100644 --- a/roles/base_server/tasks/main.yml +++ b/roles/base_server/tasks/main.yml @@ -30,10 +30,7 @@ daemon_reload: true name: docker - -- name: Add shell alias - ansible.builtin.lineinfile: - path: "root/.bashrc" - line: "alias dc='docker compose'" - regexp: '^alias dc=' - create: true +- name: Add .bashrc + template: + src: .bashrc.j2 + dest: "/root/.bashrc" diff --git a/roles/base_server/templates/.bashrc.j2 b/roles/base_server/templates/.bashrc.j2 new file mode 100644 index 0000000..ecc6edc --- /dev/null +++ b/roles/base_server/templates/.bashrc.j2 @@ -0,0 +1,2 @@ + +alias dc="docker compose" diff --git a/roles/storage_mount/README.md b/roles/storage_mount/README.md new file mode 100644 index 0000000..e0bf1c1 --- /dev/null +++ b/roles/storage_mount/README.md @@ -0,0 +1 @@ +# storage_mount diff --git a/roles/storage_mount/defaults/main.yml b/roles/storage_mount/defaults/main.yml new file mode 100644 index 0000000..664ad68 --- /dev/null +++ b/roles/storage_mount/defaults/main.yml @@ -0,0 +1,11 @@ +path: /srv/{{ role_name }} + +storage_mount_override: {} +storage_mount_defaults: + type: "nfs4" + host: "" + host_path: "" + args: "" + dest_path: "" + user: "" + password: "" diff --git a/roles/storage_mount/handlers/main.yml b/roles/storage_mount/handlers/main.yml new file mode 100644 index 0000000..993ba92 --- /dev/null +++ b/roles/storage_mount/handlers/main.yml @@ -0,0 +1,9 @@ +- name: restart container +community.docker.docker_compose_v2: + project_src: "{{ path }}" + project_name: "{{ role_name }}" + recreate: "always" + services: ["storage_mount"] + state: "restarted" +when: not _storage_mount_already_restarted + diff --git a/roles/storage_mount/meta/main.yml b/roles/storage_mount/meta/main.yml new file mode 100644 index 0000000..3a1b078 --- /dev/null +++ b/roles/storage_mount/meta/main.yml @@ -0,0 +1,20 @@ +--- +galaxy_info: + author: "Niklas Freese " + description: storage_mount + company: "Urmel Services" + license: AGPL-3.0-or-later + min_ansible_version: 2.1 + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +# dependencies: +# - role: base diff --git a/roles/storage_mount/tasks/main.yml b/roles/storage_mount/tasks/main.yml new file mode 100644 index 0000000..c9359e6 --- /dev/null +++ b/roles/storage_mount/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: "set local variables from overrides and defaults" + set_fact: + storage_mount: "{{ (storage_mount_defaults | combine(storage_mount_override, recursive=True)) if storage_mount_override else storage_mount_defaults }}" + +- name: get final escaped name + command: "systemd-escape --suffix=mount --path {{ storage_mount.dest_path }}" + register: escaped_mount_path + +- block: + - name: template nsf.service + template: + stc: nfs.service.j2 + path: "/etc/systemd/system/{{ escaped_mount_path.stdout }}" + when: + - "'nfs' in storage_mount.type" diff --git a/roles/storage_mount/templates/nfs.service.j2 b/roles/storage_mount/templates/nfs.service.j2 new file mode 100644 index 0000000..a07059e --- /dev/null +++ b/roles/storage_mount/templates/nfs.service.j2 @@ -0,0 +1,8 @@ +[Unit] +Description=Mount {{ escaped_mount_path }} via NFS + +[Mount] +What={{ storage_mount.host }}:{{ storage_mount.host_path }} +Where={{ escaped_mount_path }} +Type={{ storage_mount.type }} +Options={{ storage_mount.options }}