Ansible 我在哪里可以得到可解析的预定义变量列表?

Ansible 我在哪里可以得到可解析的预定义变量列表?,ansible,ansible-facts,Ansible,Ansible Facts,我看到Ansible提供了一些预定义的变量,我们可以在剧本和模板文件中使用这些变量。例如,主机ip地址为ansible_eth0.ipv4.address。在谷歌搜索文档时,我发现没有找到所有可用变量的列表。有人能帮我把它们列出来吗?啊!从: 如何查看所有ansible_uu变量的列表? 默认情况下,Ansible收集有关所管理机器的“事实”,这些事实可以在剧本和模板中访问。要查看有关机器的所有可用事实的列表,可以将“设置”模块作为特别操作运行: ansible -m setup hostnam

我看到Ansible提供了一些预定义的变量,我们可以在剧本和模板文件中使用这些变量。例如,主机ip地址为ansible_eth0.ipv4.address。在谷歌搜索文档时,我发现没有找到所有可用变量的列表。有人能帮我把它们列出来吗?

啊!从:

如何查看所有ansible_uu变量的列表? 默认情况下,Ansible收集有关所管理机器的“事实”,这些事实可以在剧本和模板中访问。要查看有关机器的所有可用事实的列表,可以将“设置”模块作为特别操作运行:

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
}

当前文档现在有一个

注意,文档中似乎有关于连接配置变量或“行为”变量的正式文档,这些变量未在主机变量中列出

另外,
sudo
选项在那里没有记录(是的,它的
sudo
不是
ansible\u sudo
,正如你所期望的那样…),可能还有一些没有,但这是我在他们身上找到的最好的文档

ansible -m setup hostname
仅获取安装模块收集的事实

Gilles Cornu发布了一个列表,列出特定主机的所有变量

模板(后来称为dump_变量):

使用它的剧本:

- hosts: all
  tasks:
  - template:
      src: templates/dump_variables
      dest: /tmp/ansible_variables
  - fetch:
      src: /tmp/ansible_variables
      dest: "{{inventory_hostname}}_ansible_variables"
之后,在每个主机上都有一个所有变量的转储,在本地工作站上的tmp文件夹中有一个文本转储文件的副本。如果不需要本地副本,可以删除fetch语句

这包括收集的事实、主机变量和组变量。
因此,您可以看到ansible默认变量,如组名称、目录主机名、ansible ssh主机等等。

ansible中有3个变量源:

  • 从事实中收集的变量。您可以通过运行命令来获取它们:
    ansible-m setup hostname

  • 内置(预定义)可解析变量(又名“魔术”变量)。它们记录在Ansible文档中:
    以下是从Ansible 1.9文档中提取的列表:

    • 组名称
    • 团体
    • 目录\u主机名
    • ansible_主机名
    • 库存\u主机名\u短
    • 扮演主持人
    • 委托
    • 存货主任
    • 库存文件
  • 通过命令行传递给ansible的变量。但很明显你知道它们是什么

  • 我使用这个简单的剧本:

    ---
    # vars.yml
    #
    # Shows the value of all variables/facts.
    #
    # Example:
    #
    #   ansible-playbook vars.yml -e 'hosts=localhost'
    #
    - hosts: localhost
      tasks:
        - fail: "You must specify a value for `hosts` variable - e.g.: ansible-playbook vars.yml -e 'hosts=localhost'"
          when: hosts is not defined
    
    - hosts: "{{ hosts }}"
      tasks:
        - debug: var=vars
        - debug: var=hostvars[inventory_hostname]
    

    仅供参考:这个github项目向您展示了如何在所有主机上列出90%的变量。我发现它比单主机命令更具全局实用性。自述文件包括构建简单库存报告的说明。更重要的是,在剧本的结尾运行这个程序来查看所有事实。要同时调试任务行为,请使用寄存器:

    结果缺少几个项目: -包含的YAML文件变量 -额外变量
    -此处描述的许多Ansible内部变量:

    有些变量在每个主机上都不可用,例如
    Ansible\u域
    。如果需要调试情况,我登录服务器并发出:

    user@server:~$ ansible -m setup localhost | grep domain
     [WARNING]: provided hosts list is empty, only localhost is available
        "ansible_domain": "prd.example.com",
    

    有很多变量被定义为事实--

    可用于分析变量。请小心运行以下命令。在我们的设置中,它生成444709条16MB的线路:

    ansible -m debug -a 'var=hostvars' localhost
    
    我不确定,但可能需要启用事实缓存

    如果只需要一台主机,请将主机名用作
    hostvars
    哈希的键:

    ansible -m debug -a 'var=hostvars.localhost' localhost
    

    此命令还将显示和变量。

    我知道这个问题已经得到了回答,但我觉得ansible_*facts中还没有包含一整套其他预定义变量。涵盖了我在浏览本页时一直在寻找的指令(修改Ansible行为的变量)

    这包括一些常见和特定的用例指令:

    • 变成:控制权限升级(sudo)
    • 委托给:在另一台主机上运行任务(如在本地主机上运行)
    • 串行:允许您在进入下一集之前,在特定数量/百分比的主机上运行播放

    这是正确的答案-其他被提升的答案无法为您提供完整的可用变量列表。此答案也无法为您提供完整的列表。您能否举例说明缺少什么?这不是完整的变量列表。若要在清单中未给出的单个IP/主机上使用该命令,请调用:
    ansible-m setup-i,
    -不要忘记末尾的逗号,将其列为列表,从而形成一份清单。是否没有记录在案的清单,说明这些东西是什么?哪些东西可能会出现在各种服务器的列表中,即使它们没有出现在您正在访问的服务器上?没有!这不太好笑吗。而且很烦人。不管怎么说,你看,ansible文档在某些方面相当薄弱,我认为这可能会让新手感到不快。我的意思是,我不能完全理解在include_任务中使用标记,这似乎会导致奇怪的行为,而且您仍然无法获得使用它的完整变量列表。您能详细说明您的评论吗?请更新此修复,因为有时(特别是在云资源清册中),
    ansible-m设置
    不起作用,您需要从剧本中获取此信息。Enno在上面帖子中的模板技巧在v2.2.1上为我出错。你在2下提供的列表有我需要的,只是手工很难找到。谢谢我认为这是唯一完整的答案,因为OP要求的不仅仅是以ansible_开头的变量,而是“所有可用变量”。这些神奇的变量甚至没有被引用,更不用说包含在FAQ答案中了。因为这个答案是写出来的,所以还有其他有用的魔法变量,比如
    role\u path
    ——值得访问link pro
    ansible -m debug -a 'var=hostvars' localhost
    
    ansible -m debug -a 'var=hostvars.localhost' localhost