Anpassung der Faktenammlung
Während die eingebautes Faktenammlung in Ansible leistungsstark ist, können Sie es manchmal erforderlich finden, zusätzliche Informationen zu sammeln oder den Faktenammlungsprozess anzupassen. LabEx bietet mehrere Möglichkeiten, die Faktenammlungskapazitäten von Ansible zu erweitern und anzupassen.
Benutzerdefinierte Faktmodule
Ansible ermöglicht es Ihnen, eigene Faktmodule zu schreiben, um zusätzliche Informationen über Ihre verwalteten Hosts zu sammeln. Diese benutzerdefinierten Faktmodule können in jeder von Ansible unterstützten Sprache geschrieben werden, wie Python, Bash oder PowerShell.
Hier ist ein Beispiel für ein benutzerdefiniertes Faktmodul in Python, das Informationen über die installierten Pakete auf einem Ubuntu 22.04-System sammelt:
#!/usr/bin/env python
from ansible.module_utils.basic import AnsibleModule
def main():
module = AnsibleModule(
argument_spec=dict(),
supports_check_mode=True
)
packages = []
with open('/var/lib/dpkg/status', 'r') as f:
for line in f:
if line.startswith('Package:'):
packages.append(line.split(':')[1].strip())
module.exit_json(changed=False, ansible_facts={'installed_packages': packages})
if __name__ == '__main__':
main()
Um dieses benutzerdefinierte Faktmodul zu verwenden, können Sie es in Ihrem Ansible-Playbook einbetten:
- hosts: all
gather_facts: false
tasks:
- name: Sammle benutzerdefinierte Fakten
ansible.builtin.setup:
gather_subset:
- custom
register: custom_facts
- name: Drucke benutzerdefinierte Fakten
debug:
var: custom_facts.ansible_facts.installed_packages
Dies wird die Liste der installierten Pakete sammeln und als Ansible-Fakt verfügbar machen.
Faktencaching
Ansible unterstützt den Faktencaching, was die Leistung Ihrer Playbooks verbessern kann, indem die Zeit reduziert wird, die für das Sammeln von Fakten erforderlich ist. Sie können den Faktencaching aktivieren, indem Sie die Option fact_caching
in Ihrer Ansible-Konfigurationsdatei oder Ihrem Playbook konfigurieren.
Hier ist ein Beispiel dafür, wie der Faktencaching mit dem memory
-Faktencache-Plugin aktiviert wird:
- hosts: all
gather_facts: true
strategy: free
vars:
ansible_facts_cache_plugin: memory
ansible_facts_cache_timeout: 86400 ## 1 Tag
Dies wird die gesammelten Fakten für 24 Stunden im Speicher zwischenspeichern und die Zeit reduzieren, die für das Sammeln von Fakten bei nachfolgenden Ausführungen erforderlich ist.
Indem Sie benutzerdefinierte Faktmodule und Faktencaching nutzen, können Sie die Faktenammlungskapazitäten von Ansible erweitern, um Ihren spezifischen Anforderungen besser zu entsprechen und die Leistung Ihrer Automatisierungsworkflows zu verbessern.