I dois grupos de hosts: dc1 e dc2. Também combinado a um grupo DC.
Preciso passar uma lista de endereços IP de hosts de um controlador de domínio externo para um comando. with_items não funciona aqui.
Deve ficar assim:
somescript -H 10.10.10.3 -H 10.10.10.4
Portanto, há 2 pontos: 1. Obtenha a lista de hosts no grupo DC, excluindo os do grupo primário de hosts. Não tenho certeza se isso é possível, então a maneira suja é definir uma variável remote_dc (ou array). 2. Digamos que temos uma lista de hosts de p.1: groups[remote_dc]. Como usá-lo como uma chave para hostvars[ key ]['ansible_eth1']['ipv4']['address'] e obter o resultado como uma lista?
Por enquanto, tive que usar uma maneira muito suja: criei uma lista remote_addresses para cada grupo DC e iterei assim:
command: somescript -H {{ remote_addresses|join(' -H ') }}
Portanto, existe uma maneira adequada de implementar p.1 e p.2 e omitir a criação manual da lista de endereços IP?
A documentação do ansible tem este exemplo:
Faz aproximadamente o que você quer. Você pode usar assim:
Agora, você também deseja excluir o próprio host da lista de endereços IP. Você pode fazer isso modificando o
{% for %}
seguinte:Em vez de
ansible_host
, você pode precisar usaransible_fqdn
ouansible_nodename
. Você deve verificar o que funciona para você.