Usando filtros mais avançados com módulo de configuração ansible

6

Sou novo em ansible, mas não consigo encontrar a resposta para essa pergunta, que parece bastante simples.

Nos livros de reprodução, você pode obter fatos em ansible usando o exemplo {{ ansible_eth0["ipv4"]["address"] }} ou {{ ansible_eth0.ipv4.address }} .

Como posso obter as mesmas informações que um comando somente de informações usando algo como ansible all -m setup -a "filter=???"

Como filter , tentei as sintaxes que você deseja usar nos manuais e algumas mais exóticas com a combinação * .

Este é o caminho certo para coletar dados como esse?

    
por xeor 15.07.2014 / 22:30

1 resposta

5

Infelizmente, isso não é suportado. A partir da documentação on-line :

The filter option filters only the first level subkey below ansible_facts.

Como o ansible_interface fact é uma subchave de primeiro nível na estrutura do documento JSON, o mínimo que você pode acessar é algo como:

# ansible localhost -m setup -a 'filter=ansible_p5p1'
localhost | success >> {
    "ansible_facts": {
        "ansible_p5p1": {
            "active": true,
            "device": "p5p1",
            "ipv4": {
                "address": "10.0.0.2",
                "netmask": "255.255.255.0",
                "network": "10.0.0.0"
            },
            "ipv6": [
                {
                    "address": "fd6c:xxxx:xxxx::2",
                    "prefix": "64",
                    "scope": "global"
                },
                {
                    "address": "fe80::xxxx:xxxx:xxxx:5a56",
                    "prefix": "64",
                    "scope": "link"
                }
           ],
            "macaddress": "xx:xx:xx:xx:xx:xx",
            "module": "foo",
            "mtu": 1500,
            "promisc": false,
            "type": "ether"
        }
    },
    "changed": false
}

Se seus sistemas tiverem facter ou ohai instalado, você poderá acessar as mesmas informações em ansible :

# ansible localhost -m setup -a 'filter=facter_ipaddress_p5p1'
localhost | success >> {
    "ansible_facts": {
        "facter_ipaddress_p5p1": "10.0.0.2"
    },
    "changed": false
}
    
por 15.07.2014 / 23:40

Tags