Extrai um único item de uma lista usando regex em Ansible

1

Estou tentando configurar uma interface de ponte no Ubuntu 16.04, modelando o /etc/network/interfaces file para inserir automaticamente o NIC local, assim:

auto br0
iface br0 inet dhcp
    bridge_ports <interface>

Eu não tenho o biosdevname instalado, então a interface está sendo mostrada como ens33 (no meu sistema de teste) e as alterações em outros hosts; em vez do histórico eth0 .

Não é possível usar {{ ansible_default_ipv4.interface }} para concluir o arquivo, pois isso só preencherá o arquivo corretamente na primeira execução - depois de uma reinicialização, a execução do manual conclui o arquivo com a ponte br0 port.

Eu tentei várias iterações diferentes de usar a variável {{ ansible_interfaces }} e tentei corresponder com base na regex en. * (todas essas portas serão placas de rede Ethernet fixas), mas nenhuma delas preenche corretamente o arquivo .

O mais próximo que cheguei até agora é:

- debug: msg={{ ansible_interfaces | map('match','ens.*') | list }}

quais saídas

TASK [openvpn : debug] ****************************************************
ok: [192.168.0.134] => {
    "msg": [
        false,
        false,
        true
    ]
}

Mas preciso extrair o nome real do adaptador que corresponda, não apenas se houve uma correspondência ou não.

Alternativamente,

- debug: msg="{{ item }}"
  when: "{{ item }} | map('match','ens.*')"
  with_items: "{{ ansible_interfaces }}"

fornece essa saída promissora, mas para todos os adaptadores, não apenas o que eu estou tentando corresponder:

TASK [openvpn : debug] *****************************************************
ok: [192.168.0.134] => (item=lo) => {
    "item": "lo",
    "msg": "lo"
}
ok: [192.168.0.134] => (item=br0) => {
    "item": "br0",
    "msg": "br0"
}
ok: [192.168.0.134] => (item=ens33) => {
    "item": "ens33",
    "msg": "ens33"
}
    
por Doug 01.02.2017 / 15:26

1 resposta

2

Hmm, se você precisar obter o nome da interface, tente:

- debug:
    msg: "{{ ansible_interfaces | select('match','ens.*') | list | first }}"
    
por 01.02.2017 / 15:36