Einige interessante Konfigurationsoptionen, die wir kommentieren sollten:
forks: Der Standardwert ist 5. Dies ist die Anzahl der Prozesse, die Ansible parallel startet, um mit Remote-Hosts zu kommunizieren. Je höher diese Zahl ist, desto mehr Clients kann Ansible gleichzeitig bearbeiten und desto schneller wird die Verteilung. Der Wert, den Sie festlegen können, hängt von den CPU-/RAM-Grenzwerten Ihres Managementservers ab. Beachten Sie, dass der Standardwert 5 sehr klein ist. In der Ansible-Dokumentation heißt es, dass ihn viele Benutzer auf 50, sogar 500 oder mehr setzen.
gathering: Diese Variable ändert die Richtlinie für die Sammlung von Fakten. Standardmäßig ist der Wert implicit, was bedeutet, dass Fakten systematisch gesammelt werden. Durch das Setzen dieser Variablen mit dem Wert smart können Sie Fakten nur dann sammeln, wenn diese noch nicht gesammelt wurden. In Verbindung mit einem Fakten-Cache (siehe unten) kann diese Option die Leistung deutlich steigern.
host_key_check: Achten Sie auf die Sicherheit Ihres Servers! Wenn Sie jedoch die Kontrolle über Ihre Umgebung haben, kann es interessant sein, die Schlüsselüberprüfung von Remote-Servern zu deaktivieren und so beim Herstellen der Verbindung Zeit zu sparen. Auf Remote-Servern ist es auch möglich, die Verwendung von DNS durch den SSH-Server zu deaktivieren (in /etc/ssh/sshd_config, Option UseDNS no), diese Option verschwendet Zeit beim Herstellen einer Verbindung und wird meist nur in Verbindungsprotokollen verwendet.
ansible_managed: Diese Variable, die standardmäßig Ansible managed enthält, wird normalerweise in Dateivorlagen verwendet, die auf Remote-Servern bereitgestellt werden. Ermöglicht Ihnen, einem Administrator mitzuteilen, dass die Datei automatisch verwaltet wird und dass alle daran vorgenommenen Änderungen möglicherweise verloren gehen. Es könnte interessant sein, Administratoren eine umfassendere Nachricht zu übermitteln. Seien Sie jedoch vorsichtig, denn das Ändern dieser Variablen kann dazu führen, dass die Daemons neu gestartet werden (über die mit den Vorlagen verknüpften Manager).
ssh_args = -C -o ControlMaster=auto -o ControlPersist=300s -o PreferredAuthentications=publickey: definiert die ssh-Verbindungseinstellungen. Indem Sie alle Authentifizierungsmethoden außer dem öffentlichen Schlüssel deaktivieren, können Sie viel Zeit sparen. Sie können auch den Wert von ControlPersist erhöhen, um die Leistung zu verbessern (die Dokumentation legt nahe, dass ein Wert von 30 Minuten angemessen sein könnte). Die Verbindung zu einem Client bleibt länger geöffnet und kann bei erneuter Verbindung mit demselben Server wiederverwendet werden, was eine erhebliche Zeitersparnis bedeutet.
control_path_dir: Legt den Pfad der Verbindungssockets fest. Wenn dieser Pfad zu lang ist, kann es zu Problemen führen. Erwägen Sie, es in etwas Kurzes zu ändern, wie zum Beispiel /tmp/.cp.
pipelining: Wenn Sie diesen Wert auf True setzen, erhöht sich die Performance, indem die Anzahl der erforderlichen SSH-Verbindungen beim Ausführen von Remote-Modulen reduziert wird. Sie müssen zunächst sicherstellen, dass die Option requiretty in den sudoers-Optionen deaktiviert ist (siehe Dokumentation).
Das Zusammentragen der "Facts" ist ein Prozess, der einige Zeit in Anspruch nehmen kann. Es kann interessant sein, diese Sammlung für Playbooks zu deaktivieren, die sie nicht benötigen (über die Option collect_facts) oder diese Fakten für einen bestimmten Zeitraum (z. B. 24 Stunden) in einem Cache zu speichern.
Diese Fakten können einfach in einer redis-Datenbank gespeichert werden:
Die verschiedenen Passwörter und Geheimnisse können nicht im Klartext zusammen mit dem Ansible-Quellcode oder lokal auf dem Verwaltungsserver oder einem möglichen Quellcode-Manager gespeichert werden.
Ansible empfiehlt die Verwendung eines Verschlüsselungsmanagers: ansible-vault.
Das Prinzip besteht darin, eine Variable oder eine ganze Datei mit dem Befehl ansible-vault zu verschlüsseln.
Ansible kann diese Datei zur Laufzeit entschlüsseln, indem es den Verschlüsselungsschlüssel aus der Datei abruft (z. B. /etc/ansible/ansible.cfg). Letzteres kann auch ein Python-Skript oder ähnliches sein.