J'essaie d'obtenir d'un groupe d'inventaire une liste d'adresses IP au lieu de noms d'hôtes. Ces adresses IP sont déjà dans mon hostvars mais je ne peux pas les faire correspondre à une liste de leur nom de groupe.Ansible - obtient les variables de group_vars et de host_vars ensemble dans une liste
Voici mon livre de jeux d'origine:
- name: Install Kafka
hosts: kafka
roles:
- role: kafka
kafka_hosts: "{{ groups['kafka'] | list }}"
kafka_zookeeper_hosts: "{{ groups['zookeeper'] | list }}"
Comme vous pouvez le voir, kafka_hosts et kafka_zookeeper_hosts sont des listes. Le résultat de cette PlayBook à ma configuration de serveurs est correcte:
/etc/kafka/consumer.properties:zookeeper.connect=opo-4:2181,opo-5:2181,opo-6:2181
/etc/kafka/producer.properties:metadata.broker.list=opo-1:9092,opo-2:9092,opo-3:9092
Malheureusement, cette configuration ne fonctionne pas pour tous mes serveurs en raison de problèmes de DNS. J'ai besoin d'une liste d'adresses IP au lieu de noms d'hôtes.
Si je mets manuellement les adresses IP dans mon livre de jeux, mes travaux de configuration, malheureusement pas dynamiquement:
kafka_hosts:
- 192.168.48.1
- 192.168.48.2
- 192.168.48.3
kafka_zookeeper_hosts:
- 192.168.48.4
- 192.168.48.5
- 192.168.48.6
Et le résultat sur mes serveurs rendent travail:
/etc/kafka/consumer.properties:zookeeper.connect=192.168.48.4:2181,192.168.48.5:2181,192.168.48.6:2181
/etc/kafka/producer.properties:metadata.broker.list=192.168.48.1:9092,192.168.48.2:9092,192.168.48.3:9092
En cette configuration je dois maintenir manuellement mes groupes et mon playbook avec la même information. Donc, je voudrais obtenir le hostvars des groupes kafka et zookeeper.
Voici hostvars et des groupes, définis dans le principal fichier d'inventaire:
[opo]
opo-1 ansible_host=192.168.48.1
opo-2 ansible_host=192.168.48.2
...
opo-6 ansible_host=192.168.48.6
[zookeeper]
opo-1
opo-2
opo-3
[kafka]
opo-4
opo-5
opo-6
Ce que j'ai essayé - en fonction des réponses trouvées sur stackoverflow des questions similaires:
- kafka_hosts: " {{groups [['kafka'] ['ansible_host']] | liste}} "
- kafka_hosts:" {{[hostvars [groupes ['kafka'] [0]] ['hôte_chaîne]] | liste} } "# la liste contient seulement la première adresse IP 012 Kafka_hosts: "{{[hostvars [groups ['kafka']] ['ansible_host']] | liste}} "
- kafka_hosts:" {{hostvars [groupes ['kafka']]. ansible_host | liste}} "
- kafka_hosts:" {{[hostvars. [groupes ['kafka']]. ansible_host] | liste}} "
- kafka_hosts:" {{groups ['kafka']. ansible_host | liste}} »
Aucun d'entre eux donne la
C'était la bonne syntaxe Fonctionne bien Merci Konstantin!. –