From 4cc3fdb769d13eefe8ec59238530eec8bc44821a Mon Sep 17 00:00:00 2001 From: "Jorge E. Gomez" Date: Sat, 9 Jul 2022 15:21:17 -0500 Subject: [PATCH] Creates a role to install the display --- hosts | 1 + local.yml | 8 +++ roles/display/files/bash_profile | 1 + roles/display/files/odoo_central_pubkey | 1 + roles/display/files/tty_unit | 4 ++ roles/display/tasks/main.yml | 71 +++++++++++++++++++++++++ roles/display/templates/autostart.j2 | 16 ++++++ roles/display/vars/main.yml | 13 +++++ 8 files changed, 115 insertions(+) create mode 100644 hosts create mode 100644 local.yml create mode 100644 roles/display/files/bash_profile create mode 100644 roles/display/files/odoo_central_pubkey create mode 100644 roles/display/files/tty_unit create mode 100644 roles/display/tasks/main.yml create mode 100644 roles/display/templates/autostart.j2 create mode 100644 roles/display/vars/main.yml diff --git a/hosts b/hosts new file mode 100644 index 0000000..2302eda --- /dev/null +++ b/hosts @@ -0,0 +1 @@ +localhost ansible_connection=local diff --git a/local.yml b/local.yml new file mode 100644 index 0000000..654a8d4 --- /dev/null +++ b/local.yml @@ -0,0 +1,8 @@ +--- + +- hosts: localhost + gather_facts: yes + user: root + roles: + - display + diff --git a/roles/display/files/bash_profile b/roles/display/files/bash_profile new file mode 100644 index 0000000..f33cd80 --- /dev/null +++ b/roles/display/files/bash_profile @@ -0,0 +1 @@ +[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor diff --git a/roles/display/files/odoo_central_pubkey b/roles/display/files/odoo_central_pubkey new file mode 100644 index 0000000..d922aa6 --- /dev/null +++ b/roles/display/files/odoo_central_pubkey @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFzc7gcnNd3n/g885DEDHDOQMazi93I1MZak7IV6xZ/ odoo@erpserver diff --git a/roles/display/files/tty_unit b/roles/display/files/tty_unit new file mode 100644 index 0000000..ffd7594 --- /dev/null +++ b/roles/display/files/tty_unit @@ -0,0 +1,4 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty --noissue --autologin odoo --noclear %I $TERM + diff --git a/roles/display/tasks/main.yml b/roles/display/tasks/main.yml new file mode 100644 index 0000000..7d68eec --- /dev/null +++ b/roles/display/tasks/main.yml @@ -0,0 +1,71 @@ +--- + +- name: Install required packages + apt: + update_cache: yes + pkg: '{{ required_packages }}' + +- name: Create the odoo user + user: + name: odoo + uid: 1001 + home: /home/odoo + group: users + groups: + - video + shell: /usr/bin/bash + +- name: Setup silent login for user odoo + file: + path: /home/odoo/.hushlogin + state: touch + mode: 0644 + owner: odoo + +- name: Create openbox config dir + file: + path: /home/odoo/.config/openbox + state: directory + owner: odoo + mode: 0755 + +- name: Setup openbox autostart for user odoo + template: + src: autostart.j2 + dest: /home/odoo/.config/openbox/autostart + mode: 0644 + owner: odoo + +- name: Start graphical screen when user logs in + copy: + src: bash_profile + dest: /home/odoo/.bash_profile + mode: 0644 + owner: odoo + +- name: Set authorized key with restrictions + authorized_key: + user: odoo + key: "{{ lookup('file', 'central_odoo_pubkey') }}" + key_options: 'command="/usr/bin/touch /home/odoo/kiosk",restrict' + +- name: Create autostart config dir + file: + path: /etc/systemd/system/getty@tty1.service.d + state: directory + owner: root + mode: 0755 + +- name: Login user odoo when system starts + copy: + src: tty_unit + dest: /etc/systemd/system/getty@tty1.service.d/override.conf + mode: 0644 + owner: root + +- name: Restart the login service + systemd: + daemon_reload: yes + name: getty@tty1 + state: restarted + diff --git a/roles/display/templates/autostart.j2 b/roles/display/templates/autostart.j2 new file mode 100644 index 0000000..120e306 --- /dev/null +++ b/roles/display/templates/autostart.j2 @@ -0,0 +1,16 @@ +# Disable any form of screen saver / screen blanking / power management +xset s off +xset s noblank +xset -dpms + +# Allow quitting the X server with CTRL-ATL-Backspace +setxkbmap -option terminate:ctrl_alt_bksp + +# Start Chromium in kiosk mode +sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' \ + ~/snap/chromium/common/chromium/Local\ State +sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' \ + ~/snap/chromium/common/chromium/Default/Preferences + +chromium-browser --disable-infobars --kiosk '{{ kiosk_url }}' + diff --git a/roles/display/vars/main.yml b/roles/display/vars/main.yml new file mode 100644 index 0000000..ee16d41 --- /dev/null +++ b/roles/display/vars/main.yml @@ -0,0 +1,13 @@ +--- + +required_packages: + - xserver-xorg + - xserver-xorg-video-fbdev + - x11-xserver-utils + - xinit + - xdotool + - openbox + - chromium-browser + +kiosk_url: 'https://erp.agofer.com/web#action=1013&model=stock.delivery&view_type=kanban&cids=1&menu_id=736' +