Add base__ai_worker_user var (default empty), a new operational_access.yml task file that drops a validated sudoers file for the named user, and wire it into base/tasks/main.yml after the hardening includes under the `users` tag. Set base__ai_worker_user: claude in group_vars/control so that applying base to ubongo is idempotent with the manual /etc/sudoers.d/claude-ai-worker drop-in already in place. Password remains locked; NOPASSWD is the only sudo path; actions are attributed via auditd (ADR-021). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
11 lines
375 B
YAML
11 lines
375 B
YAML
---
|
|
- name: Grant the AI-worker user passwordless sudo (ADR-015 amended / ADR-021)
|
|
ansible.builtin.copy:
|
|
content: "{{ base__ai_worker_user }} ALL=(ALL) NOPASSWD:ALL\n"
|
|
dest: "/etc/sudoers.d/{{ base__ai_worker_user }}-ai-worker"
|
|
owner: root
|
|
group: root
|
|
mode: "0440"
|
|
validate: "visudo -cf %s"
|
|
when: base__ai_worker_user | length > 0
|
|
tags: [users]
|