main.yml (2330B)
1 --- 2 - name: Install TigerVNC and dependencies 3 ansible.builtin.apt: 4 name: 5 - tigervnc-standalone-server 6 - tigervnc-common 7 - dbus-x11 8 - xfce4 9 - xfce4-goodies 10 state: present 11 update_cache: true 12 tags: [vnc, install] 13 14 - name: Create .vnc directory for user 15 ansible.builtin.file: 16 path: /home/{{ vnc_user }}/.vnc 17 state: directory 18 owner: "{{ vnc_user }}" 19 group: "{{ vnc_user }}" 20 mode: '0700' 21 tags: [vnc, configure] 22 23 - name: Create .config/tigervnc directory for user 24 ansible.builtin.file: 25 path: /home/{{ vnc_user }}/.config/tigervnc 26 state: directory 27 owner: "{{ vnc_user }}" 28 group: "{{ vnc_user }}" 29 mode: '0700' 30 tags: [vnc, configure] 31 32 - name: Set VNC password 33 ansible.builtin.shell: 34 cmd: "printf '%s' '{{ vnc_password }}' | vncpasswd -f > /home/{{ vnc_user }}/.config/tigervnc/passwd" 35 become: true 36 become_user: "{{ vnc_user }}" 37 no_log: true 38 changed_when: true 39 tags: [vnc, configure] 40 41 - name: Lock down VNC passwd file 42 ansible.builtin.file: 43 path: /home/{{ vnc_user }}/.config/tigervnc/passwd 44 owner: "{{ vnc_user }}" 45 group: "{{ vnc_user }}" 46 mode: '0600' 47 tags: [vnc, configure] 48 49 - name: Add user to video and render groups for GPU access 50 ansible.builtin.user: 51 name: "{{ vnc_user }}" 52 groups: video,render 53 append: true 54 tags: [vnc, configure, gpu] 55 56 - name: Allow user to poweroff without password 57 ansible.builtin.copy: 58 dest: /etc/sudoers.d/{{ vnc_user }}-poweroff 59 content: "{{ vnc_user }} ALL=(ALL) NOPASSWD: /sbin/poweroff\n" 60 mode: '0440' 61 tags: [vnc, configure] 62 63 - name: Deploy xstartup script 64 ansible.builtin.template: 65 src: xstartup.j2 66 dest: /home/{{ vnc_user }}/.vnc/xstartup 67 owner: "{{ vnc_user }}" 68 group: "{{ vnc_user }}" 69 mode: '0755' 70 notify: Restart VNC service 71 tags: [vnc, configure] 72 73 - name: Deploy VNC systemd service unit 74 ansible.builtin.template: 75 src: vncserver@.service.j2 76 dest: /etc/systemd/system/vncserver@.service 77 owner: root 78 group: root 79 mode: '0644' 80 notify: 81 - Reload systemd 82 - Restart VNC service 83 tags: [vnc, service] 84 85 - name: Enable and start VNC service 86 ansible.builtin.systemd: 87 name: "vncserver@{{ vnc_display }}" 88 enabled: true 89 state: started 90 daemon_reload: true 91 tags: [vnc, service]