2017-04-24 42 views
0

我知道模塊的設置提供了每個接口的MAC地址的所有MAC地址ansible的列表,例如:獲取使用

"ansible_eth0": {                                                              
     "active": true,                                                              
     "device": "eth0",                                                                                                    
     "ipv4": {                                                               
      "address": "192.168.35.174",                                                         
      "broadcast": "192.168.35.255",                                                         
      "netmask": "255.255.255.0",                                                          
      "network": "192.168.35.0"                                                          
     },                                                                 
     "ipv6": [                                                               
      {                                                                
       "address": "fe80::250:56ff:fe91:a6c2",                                                      
       "prefix": "64",                                                            
       "scope": "link"                                                            
      }                                                                
     ],                                                                 
     "macaddress": "00:50:56:91:a6:c2",                                                         
     "module": "vmxnet3",                                                            
     "mtu": 1500,                                                              
     "pciid": "0000:0b:00.0",                                                           
     "promisc": false,                                                             
     "speed": 10000,                                                              
     "type": "ether" 

假設服務器有10個接口,我要收集他們所有的Mac的,與分離分號。如果我不知道服務器有多少個接口並且我不知道他們的名字,我該怎麼做?

回答

0

查看此answer的完整描述。

你可以試試這個:

ansible_interfaces | 
    map('regex_replace','^','ansible_') | 
    map('extract',hostvars[inventory_hostname]) | 
    selectattr('macaddress','defined') | 
    map(attribute='macaddress') | 
    list 

這種表達是沒有測試,但這個想法應該是清楚的。

+0

當接口包含下劃線時(也許即使有短劃線)它會中斷,任何想法爲什麼? '錯誤是:KeyError:u'ansible_docker_gwbridge'' – Petr

+0

這是完全不同的問題。看到這[問題](https://github.com/ansible/ansible/issues/23577)。你在什麼版本上? –