--- - name: Distributionsspezifische Variablen laden ansible.builtin.include_vars: "{{ ansible_facts['os_family'] }}.yml" - name: Erforderliche Pakete installieren ansible.builtin.package: name: "{{ kfz_pakete }}" state: present - name: Dienstbenutzer anlegen ansible.builtin.user: name: "{{ kfz_benutzer }}" shell: /bin/bash create_home: true state: present - name: Lingering aktivieren, damit Container ohne Anmeldung laufen ansible.builtin.command: "loginctl enable-linger {{ kfz_benutzer }}" args: creates: "/var/lib/systemd/linger/{{ kfz_benutzer }}" - name: Verzeichnis für Quadlet-Units anlegen ansible.builtin.file: path: "/home/{{ kfz_benutzer }}/.config/containers/systemd" state: directory owner: "{{ kfz_benutzer }}" group: "{{ kfz_benutzer }}" mode: "0755" - name: Unprivilegierte Ports ab 80 freigeben ansible.posix.sysctl: name: net.ipv4.ip_unprivileged_port_start value: "80" sysctl_file: /etc/sysctl.d/99-rootless.conf state: present reload: true - name: Datenverzeichnis anlegen ansible.builtin.file: path: "{{ kfz_datenverzeichnis }}" state: directory owner: "{{ kfz_benutzer }}" group: "{{ kfz_benutzer }}" mode: "0750" - name: SELinux-Kontext für Containerdaten setzen community.general.sefcontext: target: "{{ kfz_datenverzeichnis }}(/.*)?" setype: container_file_t state: present when: ansible_facts['os_family'] == 'RedHat' notify: SELinux-Kontext anwenden - name: Firewall für HTTPS öffnen ansible.posix.firewalld: service: https permanent: true immediate: true state: enabled when: ansible_facts['os_family'] == 'RedHat' - name: Quadlet-Unit ausbringen ansible.builtin.template: src: kfz-rechner.container.j2 dest: "/home/{{ kfz_benutzer }}/.config/containers/systemd/kfz-rechner.container" owner: "{{ kfz_benutzer }}" mode: "0644" notify: Container neu starten