]> git.aero2k.de Git - urlbot-v3.git/commitdiff
Fix NATS provisioning for hosts where the bot user lacks passwordless sudo
authorThorsten <mail@aero2k.de>
Sat, 18 Jul 2026 11:09:25 +0000 (13:09 +0200)
committerThorsten <mail@aero2k.de>
Sat, 18 Jul 2026 11:09:25 +0000 (13:09 +0200)
nats_server.yml's tasks use become: true, which worked fine on munin (the
"pi" user has passwordless sudo) but hung waiting for a sudo password
prompt on aero2k.de, where "jabberbot" doesn't - discovered deploying NATS
there for the first time.

Moved "provision local nats server" into deploy.yml's first play, which
already connects as root directly (no become needed at all), instead of
the second play that connects as botuser. Also switched from a raw
include_tasks path to include_role(tasks_from: nats_server), since a bare
include_tasks doesn't pull in the role's defaults/main.yml (nats_version
was undefined otherwise) while include_role does regardless of which
tasks file is requested.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
deploy/deploy.yml
deploy/roles/urlbot/tasks/main.yml

index fb39a0b56de9a3501627caee8379c0573bda7bf2..0047589bce96b98b48650f476a0ff746900f0638 100644 (file)
@@ -1,26 +1,39 @@
 ---
 - hosts: bots
   remote_user: root
+  become: true
   tasks:
   - name: create user for bot
     user:
-      # default name
-      name: jabberbot
+      name: "{{ botuser }}"
       comment: "Account for the urlbot"
       shell: /bin/bash
+    when: manage_botuser | default(true)
+
   - name: local user can log in with ssh key
-    authorized_key: user=jabberbot key="{{ lookup('file', item) }}"
+    authorized_key: user="{{ botuser }}" key="{{ lookup('file', item) }}"
     with_fileglob:
     - "~/.ssh/*.pub"
+    when: manage_botuser | default(true)
 
   - name: ensure venv module is installed
     apt:
-      name: python3-venv
+      name:
+        - git
+        - python3-venv
+        - python3-dev
+        - build-essential
+        - libleveldb-dev
+        - libxslt1.1
       state: present
 
+  - name: provision local nats server
+    include_role:
+      name: urlbot
+      tasks_from: nats_server
+    when: broker_backend == 'nats' and nats_local | default(false)
+
 - hosts: bots
-  vars:
-    botuser: jabberbot
   remote_user: "{{ botuser }}"
   roles:
     - urlbot
index a1728464d968c8b6c6c4a5caf46097a21651ccc3..84895fe135bb641550fc2b585192f731da0b4ccb 100644 (file)
@@ -1,9 +1,5 @@
 ---
 
-- name: provision local nats server
-  include_tasks: nats_server.yml
-  when: broker_backend == 'nats' and nats_local | default(false)
-
 - name: setup virtualenv for the chatbot
   shell:
     cmd: "python3 -m venv {{ venv_chatbot }}"