Add user systemd config to pi-hole container

This commit is contained in:
Thomas Kleinendorst 2024-04-16 17:17:34 +02:00
parent 462e202737
commit 5d32ed57b4
3 changed files with 60 additions and 28 deletions

View file

@ -41,7 +41,7 @@
volumes: volumes:
- "/home/{{ actual_username }}/actual_data:/data" - "/home/{{ actual_username }}/actual_data:/data"
state: stopped state: stopped
recreate: true # For more information on the systemd startup service, see: https://linuxhandbook.com/autostart-podman-containers/
generate_systemd: generate_systemd:
path: "/home/{{ actual_username }}/.config/systemd/user/" path: "/home/{{ actual_username }}/.config/systemd/user/"
restart_policy: always restart_policy: always

View file

@ -9,3 +9,9 @@
ansible.builtin.systemd: ansible.builtin.systemd:
name: ufw.service name: ufw.service
state: restarted state: restarted
- name: Reload systemd (daemon-reload)
become: true
become_user: "{{ pi_hole_username }}"
ansible.builtin.systemd_service:
daemon_reload: true
scope: user

View file

@ -34,17 +34,30 @@
# changes the user of the folder to a UID only known within the container. This command basically doesn't need to # changes the user of the folder to a UID only known within the container. This command basically doesn't need to
# change anything at this point so we'll ignore the error for now. # change anything at this point so we'll ignore the error for now.
- "'set_mode_if_different' not in command_result.module_stdout" - "'set_mode_if_different' not in command_result.module_stdout"
- name: Start the Pi-hole container - name: Start the podman-restart.service
become: true become: true
become_user: "{{ pi_hole_username }}" become_user: "{{ pi_hole_username }}"
ansible.builtin.systemd:
name: podman-restart.service
state: started
enabled: true
scope: user
- name: Gather facts on the pi-hole container
become: true
become_user: "{{ pi_hole_username }}"
containers.podman.podman_container_info:
name: pi-hole
register: pi_hole_container_info
- name: Start the pi-hole container with correct systemd linking
when: "'no such container' in pi_hole_container_info.stderr"
become: true
become_user: "{{ pi_hole_username }}"
block:
- name: Start the Pi hole container
containers.podman.podman_container: containers.podman.podman_container:
name: pi-hole name: pi-hole
image: docker.io/pihole/pihole:2024.03.2 image: docker.io/pihole/pihole:2024.03.2
# TODO: Enable containers on boot restart_policy: always
# I expected podman containers to restart on boot with this policy but apparently the documentation specifically
# states that they won't do this. There seems to be an involved workaround to get this to work whilst keeping the
# containers "rootless". See this guide: https://linuxhandbook.com/autostart-podman-containers/
restart_policy: on-failure
publish: publish:
# It seems we can't use authbind in combination with Podman, see: https://github.com/containers/podman/issues/13426. # It seems we can't use authbind in combination with Podman, see: https://github.com/containers/podman/issues/13426.
# Instead we'll map to a higher port number and install and use the ufw firewall to forward packets to the local port. # Instead we'll map to a higher port number and install and use the ufw firewall to forward packets to the local port.
@ -63,7 +76,20 @@
volumes: volumes:
- "/home/{{ pi_hole_username }}/etc-pihole:/etc/pihole" - "/home/{{ pi_hole_username }}/etc-pihole:/etc/pihole"
- "/home/{{ pi_hole_username }}/etc-dnsmasq.d:/etc/dnsmasq.d" - "/home/{{ pi_hole_username }}/etc-dnsmasq.d:/etc/dnsmasq.d"
state: stopped
# For more information on the systemd startup service, see: https://linuxhandbook.com/autostart-podman-containers/
generate_systemd:
path: "/home/{{ pi_hole_username }}/.config/systemd/user/"
restart_policy: always
notify: Reload systemd (daemon-reload)
- name: Flush handlers
ansible.builtin.meta: flush_handlers
- name: Enable the newly created systemd service for user
ansible.builtin.systemd:
name: container-pi-hole.service
state: started state: started
enabled: true
scope: user
- name: Install certificate for pi-hole.kleinendorst.info - name: Install certificate for pi-hole.kleinendorst.info
become: true become: true
ansible.builtin.command: ansible.builtin.command: