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>
---
- 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
---
-- 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 }}"