From edca1e47dceb6cead0c7b0c079904e655a8133bd Mon Sep 17 00:00:00 2001 From: Martin Bauer Date: Sat, 19 Sep 2026 20:46:07 +0200 Subject: [PATCH] Stop the delegated frontend build from sudoing on the control machine pi_standard_setup's defaults set `ansible_become: true`. Role defaults are play-wide host variables, and in Ansible's precedence the `ansible_become` variable outranks the `become` keyword - so the `become: false` on every pi_musicmouse task delegated to localhost was silently overridden and each one tried to sudo on the machine running ansible: Premature end of stream waiting for become success or become password prompt Those defaults earn their keep bootstrapping a fresh Pi, where you connect as `pi` and become root to enable root login, so override the variable on the delegated tasks rather than removing them. Co-Authored-By: Claude Opus 5 --- roles/pi_musicmouse/handlers/main.yml | 4 ++++ roles/pi_musicmouse/tasks/main.yml | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/roles/pi_musicmouse/handlers/main.yml b/roles/pi_musicmouse/handlers/main.yml index 1ffa7ab..082dbce 100644 --- a/roles/pi_musicmouse/handlers/main.yml +++ b/roles/pi_musicmouse/handlers/main.yml @@ -11,6 +11,8 @@ chdir: "{{ pi_musicmouse_build_cache }}/{{ musicmouse_version | regex_replace('/', '_') }}/web" delegate_to: localhost become: false + vars: + ansible_become: false # see the first delegated task in tasks/main.yml changed_when: true notify: Compile frontend @@ -20,6 +22,8 @@ chdir: "{{ pi_musicmouse_build_cache }}/{{ musicmouse_version | regex_replace('/', '_') }}/web" delegate_to: localhost become: false + vars: + ansible_become: false # see the first delegated task in tasks/main.yml changed_when: true notify: Sync frontend diff --git a/roles/pi_musicmouse/tasks/main.yml b/roles/pi_musicmouse/tasks/main.yml index f9c4cc1..da65430 100644 --- a/roles/pi_musicmouse/tasks/main.yml +++ b/roles/pi_musicmouse/tasks/main.yml @@ -119,6 +119,14 @@ mode: "0755" delegate_to: localhost become: false + vars: + # `become: false` above is not enough on its own. pi_standard_setup's defaults set + # `ansible_become: true`, role defaults are play-wide host variables, and the + # `ansible_become` *variable* outranks the `become` *keyword* in Ansible's + # precedence - so every task here tried to sudo on the control machine. Those + # defaults are needed to bootstrap a fresh Pi (connect as `pi`, become root, enable + # root login), so override the variable here rather than removing them. + ansible_become: false - name: Checkout Musicmouse repo for frontend build (control machine) ansible.builtin.git: @@ -129,6 +137,8 @@ force: true delegate_to: localhost become: false + vars: + ansible_become: false # see the first delegated task in tasks/main.yml notify: Build frontend - name: Samba setup