Argh! Z FAQ :
Jak wyświetlić listę wszystkich zmiennych ansible_? Ansible domyślnie gromadzi „fakty” o zarządzanych komputerach, które są dostępne w Playbookach i szablonach. Aby zobaczyć listę wszystkich dostępnych faktów na temat komputera, możesz uruchomić moduł „setup” jako działanie ad-hoc:
ansible -m setup hostname
Spowoduje to wydrukowanie słownika zawierającego wszystkie fakty dostępne dla tego konkretnego hosta.
Oto wynik dla mojej włóczęgi maszyny wirtualnej o nazwie 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
}
Bieżąca dokumentacja zawiera teraz pełny rozdział zawierający wszystkie zmienne i fakty
ansible <ip> -m setup -i <ip>,
- nie zapomnij o przecinku na końcu, aby utworzyć listę, a tym samym spis.Pobiera tylko fakty zebrane przez moduł konfiguracji.
Gilles Cornu opublikował szablonowy trik zawierający listę wszystkich zmiennych dla konkretnego hosta.
Szablon (później nazwany dump_variables ):
Poradnik, jak go używać:
Następnie masz zrzut wszystkich zmiennych na każdym hoście i kopię każdego pliku zrzutu tekstowego na lokalnej stacji roboczej w folderze tmp. Jeśli nie chcesz kopii lokalnych, możesz usunąć instrukcję pobierania.
Obejmuje to zebrane fakty, zmienne języka macierzystego i zmienne grupowe. Dlatego widać ansibl domyślnych zmiennych jak GROUP_NAMES , inventory_hostname , ansible_ssh_host i tak dalej.
źródło
W Ansible istnieją 3 źródła zmiennych:
Zmienne zebrane na podstawie faktów. Możesz je zdobyć, uruchamiając polecenie:
ansible -m setup hostname
Wbudowane (predefiniowane) zmienne Ansible (zwane też zmiennymi „magicznymi”). Są one udokumentowane w dokumentacji Ansible: http://docs.ansible.com/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts
Oto lista wyodrębniona z dokumentacji Ansible 1.9:
źródło
role_path
- warto odwiedzić podany link, aby zobaczyć listę aktualnej wersji Ansible. Należy pamiętać, że ansibl rozwija się szybko, a wersje repozytoriów Debiana i jego dzieci są dość stare. Dokładnie sprawdź wersję, którą zainstalowałeś, z dokumentacją.Używam tego prostego poradnika:
źródło
ansible -m setup
nie działa i musisz uzyskać te informacje z podręcznika.debug
Moduł mogą być użyte do analizy zmiennych. Uważaj, uruchamiając następujące polecenie. W naszej konfiguracji generuje 444709 linii z 16 MB:Nie jestem pewien, ale może być konieczne włączenie buforowania faktów.
Jeśli potrzebujesz tylko jednego hosta, użyj nazwy hosta jako klucza do
hostvars
skrótu:To polecenie wyświetli również zmienne grupy i języka macierzystego.
źródło
Istnieje wiele zmiennych zdefiniowanych jako Fakty - http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
źródło
Zwróć uwagę na oficjalne dokumenty dotyczące zmiennych konfiguracji połączenia lub zmiennych „behawioralnych” - które nie są wymienione w zmiennych hostów, wydają się być listą parametrów zasobów behawioralnych w zasobach dokumentacji .
PS Ta
sudo
opcja jest tam nieudokumentowana (taksudo
nie jestansible_sudo
tak, jak można się spodziewać ...) i prawdopodobnie kilka innych nie jest, ale to najlepszy dokument, jaki znalazłem na ich temat.źródło
Niektóre zmienne nie są dostępne na każdym hosta, np
ansible_domain
adomain
. Jeśli sytuacja wymaga debugowania, loguję się do serwera i wydaję:źródło
Wiem, że na to pytanie już odpowiedziano, ale wydaje mi się, że istnieje cały inny zestaw predefiniowanych zmiennych, których nie obejmują fakty ansible_ *. Ta strona dokumentacji obejmuje dyrektywy (zmienne modyfikujące zachowanie Ansible), których szukałem, kiedy trafiłem na tę stronę.
Obejmuje to niektóre popularne i określone dyrektywy dotyczące przypadków użycia:
źródło
https://github.com/f500/ansible-dumpall
FYI: ten projekt github pokazuje, jak wyświetlić listę 90% zmiennych na wszystkich hostach. Uważam, że jest to bardziej przydatne na całym świecie niż polecenia pojedynczego hosta. README zawiera instrukcje tworzenia prostego raportu inwentaryzacji. Jeszcze bardziej cenne jest przeprowadzenie tego na końcu poradnika, aby zobaczyć wszystkie fakty. Aby również debugować zachowanie zadania, użyj register:
W rezultacie brakuje kilku elementów: - uwzględniono zmienne pliku YAML - dodatkowe zmienne - szereg zmiennych wewnętrznych Ansible opisanych tutaj: Ansible Behavioural Params
źródło