Argh! De la FAQ :
Comment afficher une liste de toutes les variables ansible_? Ansible rassemble par défaut des «faits» sur les machines sous gestion, et ces faits sont accessibles dans les playbooks et dans les modèles. Pour voir une liste de tous les faits disponibles sur une machine, vous pouvez exécuter le module «setup» comme une action ad hoc:
ansible -m setup hostname
Cela imprimera un dictionnaire de tous les faits disponibles pour cet hôte particulier.
Voici la sortie de ma machine virtuelle vagabonde appelée 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
}
La documentation actuelle a maintenant un chapitre complet listant toutes les variables et faits
ansible <ip> -m setup -i <ip>,
- n'oubliez pas la virgule à la fin pour en faire une liste et donc un inventaire.Obtient uniquement les faits rassemblés par le module de configuration.
Gilles Cornu a publié un modèle d'astuce pour lister toutes les variables d'un hôte spécifique.
Modèle (appelé plus tard dump_variables ):
Playbook pour l'utiliser:
Après cela, vous avez un vidage de toutes les variables sur chaque hôte et une copie de chaque fichier de vidage de texte sur votre poste de travail local dans votre dossier tmp. Si vous ne voulez pas de copies locales, vous pouvez supprimer l'instruction fetch.
Cela inclut les faits rassemblés, les variables hôtes et les variables de groupe. Par conséquent , vous voyez des variables par défaut Ansible comme group_names , inventory_hostname , ansible_ssh_host et ainsi de suite.
la source
Il existe 3 sources de variables dans Ansible:
Variables tirées des faits. Vous pouvez les obtenir en exécutant la commande:
ansible -m setup hostname
Variables Ansible intégrées (prédéfinies) (variables «magiques» AKA). Ils sont documentés dans la documentation Ansible: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts
Voici la liste extraite de la documentation Ansible 1.9:
la source
role_path
- il vaut la peine de visiter le lien fourni pour voir la liste de la version actuelle d'Ansible. Sachez qu'ansible se développe rapidement et que les versions de dépôt pour Debian et ses enfants sont assez anciennes. Vérifiez soigneusement la version que vous avez installée par rapport aux documents.J'utilise ce simple playbook:
la source
ansible -m setup
ne fait pas l'affaire et vous devez obtenir ces informations à partir d'un playbook.Le
debug
module peut être utilisé pour analyser des variables. Soyez prudent en exécutant la commande suivante. Dans notre configuration, il génère 444709 lignes avec 16 Mo:Je ne suis pas sûr, mais il peut être nécessaire d'activer la mise en cache des faits.
Si vous avez besoin d'un seul hôte, utilisez le nom d'hôte comme clé pour le
hostvars
hachage:Cette commande affichera également les variables de groupe et d' hôte .
la source
Il y a beaucoup de variables définies comme des faits - http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
la source
Notez que la documentation officielle sur les variables de configuration de connexion ou les variables «comportementales» - qui ne sont pas répertoriées dans les variables hôte, semble être la liste des paramètres d'inventaire comportemental dans la documentation d' inventaire .
PS L'
sudo
option n'est pas documentée là-bas (oui, cesudo
n'est pasansible_sudo
ce à quoi vous vous attendez ...) et probablement quelques autres ne le sont pas, mais c'est le meilleur document que j'ai trouvé sur eux.la source
Certaines variables ne sont pas disponibles sur chaque hôte, par exemple
ansible_domain
etdomain
. Si la situation doit être déboguée, je me connecte au serveur et émets:la source
Je sais que cette question a déjà reçu une réponse, mais j'ai l'impression qu'il existe un tout autre ensemble de variables prédéfinies non couvertes par les faits ansible_ *. Cette page de documentation couvre les directives (variables qui modifient le comportement d'Ansible), que je recherchais lorsque je suis tombé sur cette page.
Cela inclut certaines directives de cas d'utilisation courantes et spécifiques:
la source
https://github.com/f500/ansible-dumpall
FYI: ce projet github vous montre comment lister 90% des variables sur tous les hôtes. Je trouve cela plus utile globalement que les commandes d'hôte unique. Le README comprend des instructions pour créer un rapport d'inventaire simple. Il est encore plus précieux d'exécuter ceci à la fin d'un livre de jeu pour voir tous les faits. Pour déboguer également le comportement des tâches, utilisez register:
Il manque quelques éléments au résultat: - variables de fichier YAML incluses - extra-vars - un certain nombre de variables internes Ansible décrites ici: Ansible Behavioral Params
la source