Ich möchte ein Playbook definieren, das Fakten über meine Hosts enthält, die in anderen Spielen verwendet werden können. Das set_fact-Modul behauptet, dies tun zu können ... Ссылка - aber es funktioniert nicht ... Die Fakten, die ich habe definiere sind nach dem Aufruf von set_fact innerhalb eines Laufs des Spielbuchs verfügbar - ich würde dann erwarten, in der Lage zu sein, ansible all -m setup zu verwenden und die Tatsache irgendwo innerhalb der für jeden Host gesammelten Fakten zu sehen ...
Ich habe versucht, den Code für das set_fact-Modul zu untersuchen - aber alles, was ich finde, ist Dokumentationsstring ... Ссылка
Erstens legt das Modul set_fact nur während eines Laufs verfügbare Fakten fest. Für persistente Fakten müssen Sie entweder:
- Statisch -
- definiere sie in einer der folgenden:
- vars /
- group_vars /
- host_vars /
- Dynamisch -
Letzteres ist das, was ich normalerweise gewählt habe, da es ziemlich einfach einzurichten ist und die Fakten immer auf allen Hosts verfügbar sind, auch wenn Sie etwas tun wie:
- alle Fakten für alle Hosts erhalten, während sie mit einem nagios-Host verbunden sind, um ihre Konfigurationsdateien zu generieren.
Welche Version von Ansible verwenden Sie? Ab Version 1.8 gibt es eine integrierte Funktion zum Zwischenspeichern von Fakten , die jedoch standardmäßig deaktiviert ist. Sie müssten es in Ihrer ansible.cfg-Datei aktivieren, und Sie müssen auch einen Redis-Server ausführen, da dies die Fakten tatsächlich zwischenspeichert.
Wenn ein remote verwaltetes System über das Verzeichnis /etc/ansible/facts.d verfügt, können alle Dateien in diesem Verzeichnis, die auf .fact enden, JSON-, INI- oder ausführbare Dateien sein, die JSON zurückgeben, und diese können in Ansible lokale Fakten liefern , seit 1.3. Ein alternatives Verzeichnis kann mit der play-Anweisung fact_path angegeben werden.
Tags und Links ansible