Argh! De las preguntas frecuentes :
¿Cómo veo una lista de todas las variables ansible_? Ansible por defecto reúne "hechos" sobre las máquinas bajo administración, y se puede acceder a estos hechos en Playbooks y en plantillas. Para ver una lista de todos los datos disponibles sobre una máquina, puede ejecutar el módulo de "configuración" como una acción ad-hoc:
ansible -m setup hostname
Esto imprimirá un diccionario de todos los hechos disponibles para ese host en particular.
Aquí está la salida para mi máquina virtual vagabunda llamada 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 documentación actual ahora tiene un capítulo completo que enumera todas las variables y hechos
ansible <ip> -m setup -i <ip>,
- no olvide la coma al final para hacer una lista y, por lo tanto, un inventario.Solo obtiene los datos recopilados por el módulo de configuración.
Gilles Cornu publicó un truco de plantilla para enumerar todas las variables para un host específico.
Plantilla (más tarde llamada dump_variables ):
Playbook para usarlo:
Después de eso, tiene un volcado de todas las variables en cada host, y una copia de cada archivo de volcado de texto en su estación de trabajo local en su carpeta tmp. Si no desea copias locales, puede eliminar la declaración de recuperación.
Esto incluye datos recopilados, variables de host y variables de grupo. Por lo tanto, verá las variables predeterminadas ansibles como group_names , Inventory_hostname , ansible_ssh_host , etc.
fuente
Hay 3 fuentes de variables en Ansible:
Variables recogidas de los hechos. Puede obtenerlos ejecutando el comando:
ansible -m setup hostname
Variables de respuesta incorporadas (predefinidas) (también conocidas como variables 'mágicas'). Están documentados en la documentación de Ansible: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts
Aquí está la lista extraída de la documentación de Ansible 1.9:
fuente
role_path
: vale la pena visitar el enlace provisto para ver la lista de la versión actual de Ansible. Tenga en cuenta que ansible se desarrolla rápidamente y las versiones de repositorio para Debian y sus hijos son bastante antiguas. Comprueba cuidadosamente la versión que has instalado contra los documentos.Yo uso este sencillo libro de jugadas:
fuente
ansible -m setup
no funciona y necesita obtener esta información de un libro de jugadas.El
debug
módulo se puede usar para analizar variables. Tenga cuidado al ejecutar el siguiente comando. En nuestra configuración, genera 444709 líneas con 16 MB:No estoy seguro, pero podría ser necesario habilitar el almacenamiento en caché de datos.
Si solo necesita un host, use el nombre del host como clave para el
hostvars
hash:Este comando mostrará también las variables de grupo y host .
fuente
Hay muchas variables definidas como hechos: http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
fuente
Tenga en cuenta que los documentos oficiales sobre las variables de configuración de conexión o variables de "comportamiento", que no figuran en los valores del host, parecen ser una lista de parámetros de inventario de comportamiento en el inventario documentación del .
PD La
sudo
opción no está documentada allí (sí,sudo
noansible_sudo
es lo que esperarías ...) y probablemente un par más no lo sean, pero ese es el mejor documento que he encontrado en ellos.fuente
Algunas variables no están disponibles en todos los hosts, por ejemplo,
ansible_domain
ydomain
. Si la situación necesita ser depurada, inicio sesión en el servidor y emito:fuente
Sé que esta pregunta ya ha sido respondida, pero siento que hay otro conjunto de variables predefinidas que no están cubiertas por los hechos ansible_ *. Esta página de documentación cubre las directivas (variables que modifican el comportamiento de Ansible), que estaba buscando cuando encontré esta página.
Esto incluye algunas directivas de casos de uso comunes y algunas específicas:
fuente
https://github.com/f500/ansible-dumpall
FYI: este proyecto github le muestra cómo enumerar el 90% de las variables en todos los hosts. Me resulta más útil a nivel mundial que los comandos de host único. El archivo README incluye instrucciones para crear un informe de inventario simple. Es aún más valioso ejecutar esto al final de un libro de jugadas para ver todos los hechos. Para depurar también el comportamiento de la tarea, utilice el registro:
Al resultado le faltan algunos elementos: - variables de archivo YAML incluidas - variables adicionales - una serie de variables internas de Ansible descritas aquí: Parámetros de comportamiento de Ansible
fuente