Argh! Aus den FAQ :
Wie sehe ich eine Liste aller ansible_-Variablen? Ansible sammelt standardmäßig „Fakten“ zu den verwalteten Computern. Auf diese Fakten kann in Playbooks und in Vorlagen zugegriffen werden. Um eine Liste aller verfügbaren Fakten zu einer Maschine anzuzeigen, können Sie das Setup-Modul als Ad-hoc-Aktion ausführen:
ansible -m setup hostname
Dadurch wird ein Wörterbuch mit allen Fakten ausgedruckt, die für diesen bestimmten Host verfügbar sind.
Hier ist die Ausgabe für meine virtuelle Vagabundmaschine namens scdev:
scdev | success >> {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"10.0.2.15",
"192.168.10.10"
],
"ansible_all_ipv6_addresses": [
"fe80::a00:27ff:fe12:9698",
"fe80::a00:27ff:fe74:1330"
],
"ansible_architecture": "i386",
"ansible_bios_date": "12/01/2006",
"ansible_bios_version": "VirtualBox",
"ansible_cmdline": {
"BOOT_IMAGE": "/vmlinuz-3.2.0-23-generic-pae",
"quiet": true,
"ro": true,
"root": "/dev/mapper/precise32-root"
},
"ansible_date_time": {
"date": "2013-09-17",
"day": "17",
"epoch": "1379378304",
"hour": "00",
"iso8601": "2013-09-17T00:38:24Z",
"iso8601_micro": "2013-09-17T00:38:24.425092Z",
"minute": "38",
"month": "09",
"second": "24",
"time": "00:38:24",
"tz": "UTC",
"year": "2013"
},
"ansible_default_ipv4": {
"address": "10.0.2.15",
"alias": "eth0",
"gateway": "10.0.2.2",
"interface": "eth0",
"macaddress": "08:00:27:12:96:98",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "10.0.2.0",
"type": "ether"
},
"ansible_default_ipv6": {},
"ansible_devices": {
"sda": {
"holders": [],
"host": "SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)",
"model": "VBOX HARDDISK",
"partitions": {
"sda1": {
"sectors": "497664",
"sectorsize": 512,
"size": "243.00 MB",
"start": "2048"
},
"sda2": {
"sectors": "2",
"sectorsize": 512,
"size": "1.00 KB",
"start": "501758"
},
},
"removable": "0",
"rotational": "1",
"scheduler_mode": "cfq",
"sectors": "167772160",
"sectorsize": "512",
"size": "80.00 GB",
"support_discard": "0",
"vendor": "ATA"
},
"sr0": {
"holders": [],
"host": "IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)",
"model": "CD-ROM",
"partitions": {},
"removable": "1",
"rotational": "1",
"scheduler_mode": "cfq",
"sectors": "2097151",
"sectorsize": "512",
"size": "1024.00 MB",
"support_discard": "0",
"vendor": "VBOX"
},
"sr1": {
"holders": [],
"host": "IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)",
"model": "CD-ROM",
"partitions": {},
"removable": "1",
"rotational": "1",
"scheduler_mode": "cfq",
"sectors": "2097151",
"sectorsize": "512",
"size": "1024.00 MB",
"support_discard": "0",
"vendor": "VBOX"
}
},
"ansible_distribution": "Ubuntu",
"ansible_distribution_release": "precise",
"ansible_distribution_version": "12.04",
"ansible_domain": "",
"ansible_eth0": {
"active": true,
"device": "eth0",
"ipv4": {
"address": "10.0.2.15",
"netmask": "255.255.255.0",
"network": "10.0.2.0"
},
"ipv6": [
{
"address": "fe80::a00:27ff:fe12:9698",
"prefix": "64",
"scope": "link"
}
],
"macaddress": "08:00:27:12:96:98",
"module": "e1000",
"mtu": 1500,
"type": "ether"
},
"ansible_eth1": {
"active": true,
"device": "eth1",
"ipv4": {
"address": "192.168.10.10",
"netmask": "255.255.255.0",
"network": "192.168.10.0"
},
"ipv6": [
{
"address": "fe80::a00:27ff:fe74:1330",
"prefix": "64",
"scope": "link"
}
],
"macaddress": "08:00:27:74:13:30",
"module": "e1000",
"mtu": 1500,
"type": "ether"
},
"ansible_form_factor": "Other",
"ansible_fqdn": "scdev",
"ansible_hostname": "scdev",
"ansible_interfaces": [
"lo",
"eth1",
"eth0"
],
"ansible_kernel": "3.2.0-23-generic-pae",
"ansible_lo": {
"active": true,
"device": "lo",
"ipv4": {
"address": "127.0.0.1",
"netmask": "255.0.0.0",
"network": "127.0.0.0"
},
"ipv6": [
{
"address": "::1",
"prefix": "128",
"scope": "host"
}
],
"mtu": 16436,
"type": "loopback"
},
"ansible_lsb": {
"codename": "precise",
"description": "Ubuntu 12.04 LTS",
"id": "Ubuntu",
"major_release": "12",
"release": "12.04"
},
"ansible_machine": "i686",
"ansible_memfree_mb": 23,
"ansible_memtotal_mb": 369,
"ansible_mounts": [
{
"device": "/dev/mapper/precise32-root",
"fstype": "ext4",
"mount": "/",
"options": "rw,errors=remount-ro",
"size_available": 77685088256,
"size_total": 84696281088
},
{
"device": "/dev/sda1",
"fstype": "ext2",
"mount": "/boot",
"options": "rw",
"size_available": 201044992,
"size_total": 238787584
},
{
"device": "/vagrant",
"fstype": "vboxsf",
"mount": "/vagrant",
"options": "uid=1000,gid=1000,rw",
"size_available": 42013151232,
"size_total": 484145360896
}
],
"ansible_os_family": "Debian",
"ansible_pkg_mgr": "apt",
"ansible_processor": [
"Pentium(R) Dual-Core CPU E5300 @ 2.60GHz"
],
"ansible_processor_cores": "NA",
"ansible_processor_count": 1,
"ansible_product_name": "VirtualBox",
"ansible_product_serial": "NA",
"ansible_product_uuid": "NA",
"ansible_product_version": "1.2",
"ansible_python_version": "2.7.3",
"ansible_selinux": false,
"ansible_swapfree_mb": 766,
"ansible_swaptotal_mb": 767,
"ansible_system": "Linux",
"ansible_system_vendor": "innotek GmbH",
"ansible_user_id": "neves",
"ansible_userspace_architecture": "i386",
"ansible_userspace_bits": "32",
"ansible_virtualization_role": "guest",
"ansible_virtualization_type": "virtualbox"
},
"changed": false
}
Die aktuelle Dokumentation enthält jetzt ein vollständiges Kapitel mit allen Variablen und Fakten
ansible <ip> -m setup -i <ip>,
Um den Befehl für eine einzelne IP / Host zu verwenden, die nicht in einem Inventar angegeben ist, rufen Sie Folgendes auf: - Vergessen Sie nicht das Komma am Ende, um daraus eine Liste und damit ein Inventar zu machen.Erhält nur die vom Setup-Modul gesammelten Fakten.
Gilles Cornu hat einen Vorlagentrick veröffentlicht, um alle Variablen für einen bestimmten Host aufzulisten.
Vorlage (später dump_variables genannt ):
Playbook, um es zu benutzen:
Danach haben Sie einen Dump aller Variablen auf jedem Host und eine Kopie jeder Text-Dump-Datei auf Ihrer lokalen Workstation in Ihrem tmp-Ordner. Wenn Sie keine lokalen Kopien möchten, können Sie die Abrufanweisung entfernen.
Dies umfasst gesammelte Fakten, Hostvariablen und Gruppenvariablen. Daher werden ansible Standardvariablen wie Gruppennamen , Inventarhostname , ansible_ssh_host usw. angezeigt .
quelle
Es gibt 3 Quellen für Variablen in Ansible:
Aus Fakten gesammelte Variablen. Sie können sie erhalten, indem Sie den folgenden Befehl ausführen:
ansible -m setup hostname
Eingebaute (vordefinierte) Ansible-Variablen (AKA 'Magic'-Variablen). Sie sind in der Ansible-Dokumentation dokumentiert: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts
Hier ist die Liste, die aus der Ansible 1.9-Dokumentation extrahiert wurde:
quelle
role_path
- es lohnt sich, den bereitgestellten Link zu besuchen, um die Liste für die aktuelle Version von Ansible anzuzeigen. Seien Sie sich bewusst, dass sich ansible schnell entwickelt und Repo-Versionen für Debian und seine Kinder ziemlich alt sind. Überprüfen Sie die installierte Version sorgfältig anhand der Dokumente.Ich benutze dieses einfache Spielbuch:
quelle
ansible -m setup
nicht ausreichend und Sie müssen diese Informationen aus einem Playbook abrufen.Das
debug
Modul kann zur Analyse von Variablen verwendet werden. Führen Sie den folgenden Befehl vorsichtig aus. In unserem Setup werden 444709 Zeilen mit 16 MB generiert:Ich bin nicht sicher, aber es könnte notwendig sein, das Zwischenspeichern von Fakten zu aktivieren.
Wenn Sie nur einen Host benötigen, verwenden Sie den Hostnamen als Schlüssel für den
hostvars
Hash:Dieser Befehl wird auch angezeigt Gruppe und Host - Variablen.
quelle
Es gibt viele Variablen, die als Fakten definiert sind - http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
quelle
Beachten Sie, dass die offiziellen Dokumente zu Verbindungskonfigurationsvariablen oder "Verhaltens" -Variablen, die nicht in Host-Variablen aufgeführt sind, in der Inventardokumentation als Liste der Verhaltensinventarparameter aufgeführt sind .
PS Die
sudo
Option ist dortsudo
nicht dokumentiert (ja, es ist nicht so,ansible_sudo
wie Sie es erwarten würden ...) und wahrscheinlich sind es nicht ein paar mehr, aber das ist das beste Dokument, das ich bei ihnen gefunden habe.quelle
Einige Variablen sind nicht auf jedem Host verfügbar, z . B.
ansible_domain
unddomain
. Wenn die Situation behoben werden muss, melde ich mich beim Server an und stelle folgende Probleme:quelle
Ich weiß, dass diese Frage bereits beantwortet wurde, aber ich habe das Gefühl, dass es eine ganze Reihe anderer vordefinierter Variablen gibt, die nicht durch die ansible_ * -Fakten abgedeckt sind. Diese Dokumentationsseite behandelt die Anweisungen (Variablen, die das Verhalten von Ansible ändern), nach denen ich gesucht habe, als ich auf diese Seite gestoßen bin.
Dies umfasst einige allgemeine und einige spezifische Anwendungsfallrichtlinien:
quelle
https://github.com/f500/ansible-dumpall
FYI: Dieses Github-Projekt zeigt Ihnen, wie Sie 90% der Variablen auf allen Hosts auflisten. Ich finde es global nützlicher als einzelne Host-Befehle. Die README-Datei enthält Anweisungen zum Erstellen eines einfachen Inventarberichts. Es ist noch wertvoller, dies am Ende eines Spielbuchs auszuführen, um alle Fakten zu sehen. Um auch das Verhalten von Aufgaben zu debuggen, verwenden Sie register:
Dem Ergebnis fehlen einige Elemente: - enthaltene YAML-Dateivariablen - zusätzliche Variablen - eine Reihe der hier beschriebenen internen Ansible-Variablen : Ansible Behavioral Params
quelle