--- - name: Packages ansible.builtin.apt: name: - xserver-xorg - xinit - x11-xserver-utils - firefox-esr - unclutter cache_valid_time: 7200 - name: Create kiosk user ansible.builtin.user: name: "{{ pi_kiosk_user }}" groups: [video, input, tty] shell: /bin/bash create_home: true - name: Autologin the kiosk user on tty1 ansible.builtin.file: path: /etc/systemd/system/getty@tty1.service.d state: directory mode: "0755" - name: Install getty autologin override ansible.builtin.template: src: autologin.conf.j2 dest: /etc/systemd/system/getty@tty1.service.d/autologin.conf mode: "0644" notify: Reload systemd and restart getty - name: Install .bash_profile (starts X on tty1 login) ansible.builtin.template: src: bash_profile.j2 dest: "/home/{{ pi_kiosk_user }}/.bash_profile" owner: "{{ pi_kiosk_user }}" group: "{{ pi_kiosk_user }}" mode: "0644" - name: Install .xinitrc (launches Firefox kiosk, no window manager) ansible.builtin.template: src: xinitrc.j2 dest: "/home/{{ pi_kiosk_user }}/.xinitrc" owner: "{{ pi_kiosk_user }}" group: "{{ pi_kiosk_user }}" mode: "0755" - name: Ensure firefox-esr policy directory exists ansible.builtin.file: path: /etc/firefox-esr state: directory mode: "0755" # apt normally creates this; a backstop in case the package layout doesn't - name: Install Firefox enterprise policy (suppress session-restore/update prompts) ansible.builtin.copy: src: policies.json dest: /etc/firefox-esr/policies.json mode: "0644"