Ich verwende Ansible'sbecome
Funktionalität, um Spiele mit einem anderen Benutzer auszuführen. Hier ist ein Beispiel für mein site.yml
:
- hosts: webserver
remote_user: ansible_user
become: true
roles:
- role_a
- role_b
Dies funktioniert wie erwartet: Ansible verwendet ansible_user
zum Herstellen einer Verbindung webserver
und sudo
führt anschließend die Aufgaben in den definierten Rollen als aus . Es wird jedoch einmal pro Aufgabe in jeder der Rollen root
ausgeführt , was zu einem erheblichen Mehraufwand führt, da die Ausführung ziemlich langsam ist.sudo
sudo
Wie konfiguriere ich Ansible, um seine become
Konfiguration einmal pro Spiel statt einmal pro Aufgabe anzuwenden?
Antwort1
Eine Rechteausweitung kann nur einmal pro Spiel durchgeführt werden, indemMitogen für Ansible.
Aus ihrer Dokumentation:
Pro Ziel wird eine Verbindung verwendet, zusätzlich zu einem Sudo-Aufruf pro Benutzerkonto. Dies ist viel besser als SSH-Multiplexing in Kombination mit Pipelining, da zwischen den Schritten wichtige Zustände im RAM aufrechterhalten werden können und Systemprotokolle nicht mit wiederholten Authentifizierungsereignissen überflutet werden.
Mitogen bietet außerdem zusätzliche Leistungsvorteile beim Ausführen von Spielen, beispielsweise die Wiederverwendung von Python-Interpretern.
Es ist jedoch nicht mit allen Ansible-Konfigurationen kompatibel, da es wesentliche Teile von Ansible ersetzt! In der Dokumentation finden SieBemerkenswerte Unterschiede zu Vanilla Ansible, von denen einige möglicherweise Änderungen an den Spielbüchern erfordern oder die Verwendung völlig unmöglich machen.