Sollte ansible-playbook -e "sudo=no" nicht sudo: true in meinem Playbook überschreiben?

Sollte ansible-playbook -e "sudo=no" nicht sudo: true in meinem Playbook überschreiben?

Wenn ich mich mit einem Nicht-Sudo-Benutzer authentifiziere, möchte ich Playbook-Sudo überschreiben.

---
name: test
hosts: foo
sudo: yes

Wenn ich mache:

ansible-playbook test.yml -e "sudo=no"

Es wird nicht richtig überschrieben, sondern ich muss es sudo: yesaus meinem Playbook entfernen. Sollte das nicht sudo=nofunktionieren?

Antwort1

sudoist keine Variable, sondern eine Direktive. Mit dem -eBefehlszeilenparameter haben Sie eine Variable definiert, die aufgerufen wird sudo, aber das hat nichts damit zu tun. Es würde wahrscheinlich funktionieren, wenn Sie dies in Ihrem Playbook tun würden:

sudo: "{{ sudo }}"

oder vielleicht

sudo: "{{ sudo | default('yes') }}"

Wenn Sie sich jedoch für eine der oben genannten Möglichkeiten entscheiden, geben Sie der Variable nicht den Namen sudo, da dies verwirrend sein könnte. Geben Sie ihr einen Namen must_sudooder so etwas.

verwandte Informationen