From d4a5776f24dbff155aabe2f01f213d4296906c52 Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:44:58 -0400 Subject: [PATCH 1/8] Install bcmath PHP extension --- provision-contest/ansible/roles/base_packages/defaults/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/provision-contest/ansible/roles/base_packages/defaults/main.yml b/provision-contest/ansible/roles/base_packages/defaults/main.yml index 90f1ef2b..6a552323 100644 --- a/provision-contest/ansible/roles/base_packages/defaults/main.yml +++ b/provision-contest/ansible/roles/base_packages/defaults/main.yml @@ -42,6 +42,7 @@ INSTALLED_PACKAGES: - php-mysql - php-xml - php-zip + - php-bcmath - pv - python3-sphinx - python3-sphinx-rtd-theme From 9bde3b87520d201a1cc64f94da55d79ee430f955 Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:45:45 -0400 Subject: [PATCH 2/8] Use lightdm instead of GDM3 --- .../roles/domjudge_user/handlers/main.yml | 4 ++-- .../roles/domjudge_user/tasks/main.yml | 20 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/provision-contest/ansible/roles/domjudge_user/handlers/main.yml b/provision-contest/ansible/roles/domjudge_user/handlers/main.yml index d1c7e282..9fc89b5c 100644 --- a/provision-contest/ansible/roles/domjudge_user/handlers/main.yml +++ b/provision-contest/ansible/roles/domjudge_user/handlers/main.yml @@ -1,6 +1,6 @@ --- -- name: Restart gdm +- name: Restart lightdm service: - name: gdm3 + name: lightdm enabled: true state: restarted diff --git a/provision-contest/ansible/roles/domjudge_user/tasks/main.yml b/provision-contest/ansible/roles/domjudge_user/tasks/main.yml index 53c86d76..cd87e167 100644 --- a/provision-contest/ansible/roles/domjudge_user/tasks/main.yml +++ b/provision-contest/ansible/roles/domjudge_user/tasks/main.yml @@ -24,21 +24,23 @@ - name: Setup autologin on desktop installs block: - - name: Enable GDM autologin + - name: Enable lightdm autologin lineinfile: - path: /etc/gdm3/custom.conf - regexp: 'AutomaticLoginEnable' - line: 'AutomaticLoginEnable=true' + path: /etc/lightdm/lightdm.conf + regexp: 'autologin-timeout' + line: 'autologin-timeout=0' create: true mode: 0644 - notify: Restart gdm + notify: Restart lightdm - name: Automatically login domjudge user lineinfile: - path: /etc/gdm3/custom.conf - regexp: 'AutomaticLogin\s*=' - line: 'AutomaticLogin=domjudge' - notify: Restart gdm + path: /etc/lightdm/lightdm.conf + regexp: 'autologin-user' + line: 'autologin-user=domjudge' + create: true + mode: 0644 + notify: Restart lightdm - name: Make sure autostart directory exists file: From f6fe321bb3f626e28fd9883a2e03bf5f21e01929 Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:46:09 -0400 Subject: [PATCH 3/8] Install newer version of OpenJDK from Ubuntu 24.04 --- provision-contest/ansible/roles/judgedaemon/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provision-contest/ansible/roles/judgedaemon/tasks/main.yml b/provision-contest/ansible/roles/judgedaemon/tasks/main.yml index e585b7e2..962b2f98 100644 --- a/provision-contest/ansible/roles/judgedaemon/tasks/main.yml +++ b/provision-contest/ansible/roles/judgedaemon/tasks/main.yml @@ -36,7 +36,7 @@ - name: Create chroot shell: "set -o pipefail && {{ DJ_DIR }}/misc-tools/dj_make_chroot -y -H - -i icpc-kotlinc,openjdk-17-jdk-headless + -i openjdk-21-jdk-headless -l \"$(ls /tmp/dj_ansible/install-chroot/*.deb 2>/dev/null | tr '\n' ',')\" -s \"$(ls /tmp/dj_ansible/chroot-list/*.list 2>/dev/null | tr '\n' ',')\" 2>&1 | tee /tmp/dj_make_chroot.log; From 3cb7ccdc083050b82d1c39cd3f785bda56b0477c Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:46:36 -0400 Subject: [PATCH 4/8] Do not set cgroupv1 flags anymore since we don't need it --- provision-contest/ansible/roles/judgedaemon/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provision-contest/ansible/roles/judgedaemon/tasks/main.yml b/provision-contest/ansible/roles/judgedaemon/tasks/main.yml index 962b2f98..6dd8f2a4 100644 --- a/provision-contest/ansible/roles/judgedaemon/tasks/main.yml +++ b/provision-contest/ansible/roles/judgedaemon/tasks/main.yml @@ -52,7 +52,7 @@ - name: Pre-generate the kernel flags for ansible usage set_fact: - procline: "apparmor=0 systemd.unified_cgroup_hierarchy=0 cgroup_enable=memory swapaccount=1 isolcpus={{ cpucore | join(',') }}" + procline: "apparmor=0 swapaccount=1 isolcpus={{ cpucore | join(',') }}" - name: Add cgroup kernel parameters lineinfile: From 3a53753e1c2080810f7ebaa7fb5f3b480807f33b Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:47:43 -0400 Subject: [PATCH 5/8] Do not set dconf settings anymore --- .../system_fixes/files/dconf/db/local.d/01-alt-tab | 2 -- .../system_fixes/files/dconf/db/local.d/locks/locks | 1 - .../roles/system_fixes/files/dconf/profile/user | 2 -- .../ansible/roles/system_fixes/tasks/main.yml | 10 ---------- 4 files changed, 15 deletions(-) delete mode 100644 provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/01-alt-tab delete mode 100644 provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/locks/locks delete mode 100644 provision-contest/ansible/roles/system_fixes/files/dconf/profile/user diff --git a/provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/01-alt-tab b/provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/01-alt-tab deleted file mode 100644 index df3c2b07..00000000 --- a/provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/01-alt-tab +++ /dev/null @@ -1,2 +0,0 @@ -[org/compiz/profiles/gnome-flashback/plugins/core] -active-plugins=['core', 'composite', 'opengl', 'compiztoolbox', 'decor', 'gnomecompat', 'grid', 'imgpng', 'mousepoll', 'move', 'place', 'regex', 'resize', 'session', 'snap', 'vpswitch', 'wall', 'animation', 'commands', 'expo', 'ezoom', 'fade', 'scale', 'switcher'] diff --git a/provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/locks/locks b/provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/locks/locks deleted file mode 100644 index 14b868a5..00000000 --- a/provision-contest/ansible/roles/system_fixes/files/dconf/db/local.d/locks/locks +++ /dev/null @@ -1 +0,0 @@ -/org/compiz/profiles/gnome-flashback/plugins/core/active-plugins diff --git a/provision-contest/ansible/roles/system_fixes/files/dconf/profile/user b/provision-contest/ansible/roles/system_fixes/files/dconf/profile/user deleted file mode 100644 index aca0641f..00000000 --- a/provision-contest/ansible/roles/system_fixes/files/dconf/profile/user +++ /dev/null @@ -1,2 +0,0 @@ -user-db:user -system-db:local diff --git a/provision-contest/ansible/roles/system_fixes/tasks/main.yml b/provision-contest/ansible/roles/system_fixes/tasks/main.yml index 358bf659..0542f637 100644 --- a/provision-contest/ansible/roles/system_fixes/tasks/main.yml +++ b/provision-contest/ansible/roles/system_fixes/tasks/main.yml @@ -33,16 +33,6 @@ fi fi -- name: Force enable alt-tab for switching windows - copy: - src: dconf/ - dest: /etc/dconf/ - owner: root - group: root - mode: 0755 - notify: Update dconf - when: GRAPHICAL - - name: Configure network for static IP address when: STATIC_IP_ENABLED block: From 566102ca5ffd3856f190633065aad96945cd18d8 Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:48:07 -0400 Subject: [PATCH 6/8] Fix SAN entry for domjudge SSL cert --- provision-contest/ansible/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provision-contest/ansible/Makefile b/provision-contest/ansible/Makefile index 06f39de7..3cde2304 100644 --- a/provision-contest/ansible/Makefile +++ b/provision-contest/ansible/Makefile @@ -71,7 +71,7 @@ $(SSHKEY) $(SSHKEY).pub: $(SSL_DOMSERVER_FILES): openssl req -x509 -nodes -newkey rsa:4096 -subj "/O=DOMjudge/CN=domjudge" \ - -addext "subjectAltName = DNS:wf46-domjudge,DNS:wf47-domjudge,DNS:analyst" \ + -addext "subjectAltName = DNS:domjudge" \ -sha256 -days 365 -keyout $(SSL_DOMSERVER).key -out $(SSL_DOMSERVER).crt $(SSL_NODEEXPORT_FILES): openssl req -x509 -nodes -newkey rsa:4096 -subj "/O=DOMjudge/CN=metricexporter" \ From 2f9f65183faf21684d14735c0ab53fdde6ee54ec Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 18:49:04 -0400 Subject: [PATCH 7/8] Use autostart script again for domlogo since systemd service doesn't work anymore --- .../ansible/roles/domlogo/files/README.md | 2 +- .../ansible/roles/domlogo/tasks/main.yml | 15 ++++++--------- .../roles/domlogo/templates/domlogo.desktop.j2 | 4 ++++ .../roles/domlogo/templates/domlogo.service.j2 | 18 ------------------ 4 files changed, 11 insertions(+), 28 deletions(-) create mode 100644 provision-contest/ansible/roles/domlogo/templates/domlogo.desktop.j2 delete mode 100644 provision-contest/ansible/roles/domlogo/templates/domlogo.service.j2 diff --git a/provision-contest/ansible/roles/domlogo/files/README.md b/provision-contest/ansible/roles/domlogo/files/README.md index 2d1d2ac3..21c889ba 100644 --- a/provision-contest/ansible/roles/domlogo/files/README.md +++ b/provision-contest/ansible/roles/domlogo/files/README.md @@ -5,7 +5,7 @@ First, create the following files: - `images/photos/crew.png`, an image with a width of 1024 (and any height) to show for teams without a photo. - `images/photos/idle.png`, an image with a width of 1024 (and any height) to show when the judgedaemon is idle. -Next, add the needed Python dependencies to the `lib` folder, within a folder called `python3.10`. You can copy this +Next, add the needed Python dependencies to the `lib` folder, within a folder called `python3.12`. You can copy this folder from a local machine and it should contain the `FreeSimpleGUI` and `requests` Python packages. Optionally you can create a file `images/config.yaml` with something like: diff --git a/provision-contest/ansible/roles/domlogo/tasks/main.yml b/provision-contest/ansible/roles/domlogo/tasks/main.yml index f5811239..0531e0c9 100644 --- a/provision-contest/ansible/roles/domlogo/tasks/main.yml +++ b/provision-contest/ansible/roles/domlogo/tasks/main.yml @@ -25,7 +25,7 @@ - name: Fix ownership of domlogo env file: - path: "/home/domjudge/.local/lib/python3.10" + path: "/home/domjudge/.local/lib/python3.12" recurse: true owner: domjudge group: domjudge @@ -46,11 +46,8 @@ - name: Copy domlogo systemd unit file template: - src: "domlogo.service.j2" - dest: "/etc/systemd/system/domlogo.service" - -- name: Enable and start domlogo - systemd: - name: domlogo - enabled: true - state: started \ No newline at end of file + src: "domlogo.desktop.j2" + dest: "/home/domjudge/.config/autostart/domlogo.desktop" + owner: domjudge + group: domjudge + mode: 0755 diff --git a/provision-contest/ansible/roles/domlogo/templates/domlogo.desktop.j2 b/provision-contest/ansible/roles/domlogo/templates/domlogo.desktop.j2 new file mode 100644 index 00000000..d14746d2 --- /dev/null +++ b/provision-contest/ansible/roles/domlogo/templates/domlogo.desktop.j2 @@ -0,0 +1,4 @@ +[Desktop Entry] +Name=domlogo +Type=Application +Exec=env REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/domserver.crt bash -c "sleep 3; cd {{ DJ_DIR }}; python3 ./domlogo.py" diff --git a/provision-contest/ansible/roles/domlogo/templates/domlogo.service.j2 b/provision-contest/ansible/roles/domlogo/templates/domlogo.service.j2 deleted file mode 100644 index 71c899e3..00000000 --- a/provision-contest/ansible/roles/domlogo/templates/domlogo.service.j2 +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description="DOMlogo" -After=network.target - -[Service] -Type=simple - -Environment=REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/domserver.crt -Environment=DISPLAY=:0 -WorkingDirectory={{ DJ_DIR }} -ExecStart=domlogo.py -User=domjudge - -Restart=always -RestartSec=3 - -[Install] -WantedBy=graphical.target From 51df4d0e8776d45c10694e38f427d4417c924027 Mon Sep 17 00:00:00 2001 From: Nicky Gerritsen Date: Thu, 22 May 2025 19:24:55 -0400 Subject: [PATCH 8/8] Use new paths for apt configs --- .../ansible/roles/base_packages/tasks/main.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/provision-contest/ansible/roles/base_packages/tasks/main.yml b/provision-contest/ansible/roles/base_packages/tasks/main.yml index de4b0175..2e982a8b 100644 --- a/provision-contest/ansible/roles/base_packages/tasks/main.yml +++ b/provision-contest/ansible/roles/base_packages/tasks/main.yml @@ -5,14 +5,15 @@ block: - name: Replace pc2.ecs.baylor.edu by packages in apt sources replace: - dest: "/etc/apt/{{ item }}" + dest: "/etc/apt/sources.list.d/{{ item }}" regexp: 'sysopspackages\.icpc\.global' replace: 'packages' loop: - - sources.list - - sources.list.d/mono.list - - sources.list.d/vscode.list - - sources.list.d/pypy-ubuntu-ppa-jammy.list + - ubuntu.sources + - vscode.sources + - firefox.sources + - sysopspackagesicpcglobal.sources + - jetbrains.sources notify: Run apt update - name: Add packages to hosts file