Argh! Из FAQ :
Как я вижу список всех переменных ansible_? По умолчанию Ansible собирает «факты» об управляемых машинах, и к этим фактам можно получить доступ в Playbooks и в шаблонах. Чтобы увидеть список всех доступных фактов о машине, вы можете запустить модуль «setup» как специальное действие:
ansible -m setup hostname
Это распечатает словарь всех фактов, доступных для данного конкретного хоста.
Вот вывод для моей бродячей виртуальной машины с именем 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
}
В текущей документации теперь есть полная глава со списком всех переменных и фактов.
ansible <ip> -m setup -i <ip>,
- не забывайте запятую в конце, чтобы сделать ее списком и, следовательно, инвентаризацией.Получает только факты, собранные модулем установки.
Жиль Корну опубликовал шаблонный трюк, чтобы перечислить все переменные для конкретного хоста.
Шаблон (позже названный dump_variables ):
Playbook, чтобы использовать это:
После этого у вас есть дамп всех переменных на каждом хосте и копия каждого текстового дамп-файла на вашей локальной рабочей станции в папке tmp. Если вам не нужны локальные копии, вы можете удалить оператор извлечения.
Это включает в себя собранные факты, переменные хоста и групповые переменные. Следовательно, вы видите переменные по умолчанию, такие как имя_группы , имя_хоста_ инвентаря , имя_сайла_хранилища и так далее
источник
В Ansible есть 3 источника переменных:
Переменные собраны из фактов. Вы можете получить их, запустив команду:
ansible -m setup hostname
Встроенные (предопределенные) переменные Ansible («магические» переменные AKA). Они описаны в документации Ansible: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts
Вот список, извлеченный из документации Ansible 1.9:
источник
role_path
- стоит посетить предоставленную ссылку, чтобы увидеть список текущей версии Ansible. Имейте в виду, что ansible быстро развивается, и версии репо для Debian и его дочерних элементов довольно стары. Внимательно проверьте версию, которую вы установили в отношении документов.Я использую эту простую пьесу:
источник
ansible -m setup
не получается, и вам нужно получить эту информацию из сборника игр.debug
Модуль может быть использован для анализа переменных. Будьте осторожны при выполнении следующей команды. В нашей настройке он генерирует 444709 строк по 16 МБ:Я не уверен, но может быть необходимо включить кэширование фактов.
Если вам нужен только один хост, используйте имя хоста в качестве ключа для
hostvars
хэша:Эта команда отобразит также переменные группы и хоста .
источник
Существует множество переменных, определенных как факты - http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
источник
Обратите внимание, что официальные документы по переменным конфигурации соединения или «поведенческим» переменным, которые не перечислены в переменных хоста, представляются списком параметров инвентаризации поведения в документации инвентаризации .
PS The
sudo
Опция там не документирована (да, этоsudo
не так,ansible_sudo
как вы ожидаете ...), и, вероятно, еще пара нет, но это лучший документ, который я нашел на них.источник
Некоторые переменные доступны не на каждом хосте, например
ansible_domain
иdomain
. Если необходимо исправить ситуацию, я захожу на сервер и выдаю:источник
Я знаю, что на этот вопрос уже дан ответ, но я чувствую, что существует целый другой набор предопределенных переменных, не охватываемых фактами ansible_ *. Эта страница документации охватывает директивы (переменные, которые изменяют поведение Ansible), которые я искал, когда натолкнулся на эту страницу.
Это включает в себя некоторые общие и некоторые конкретные директивы прецедента:
источник
https://github.com/f500/ansible-dumpall
FYI: этот проект github показывает, как составить список 90% переменных на всех хостах. Я считаю это более полезным во всем мире, чем команды с одним хостом. README содержит инструкции по созданию простого инвентарного отчета. Еще более ценно запустить это в конце сборника, чтобы увидеть все факты. Для отладки поведения Задачи используйте регистр:
В результате не хватает нескольких элементов: - включенные переменные файла YAML - дополнительные переменные - количество описанных здесь внутренних переменных Ansible : Ansible Behavioral Params
источник