Comment puis-je configurer /etc/hosts avec ansible orchestration
Des besoins de l'application suivants hôtes:
[foo-servers]
foo-server ansible_ssh_host=192.168.50.2
[bar-servers]
bar-server ansible_ssh_host=192.168.50.3
[mysql-servers]
mysql-server ansible_ssh_host=192.168.50.4
[mongodb-servers]
mongodb-server ansible_ssh_host=192.168.50.5
J'ai besoin de configurer des hôtes sur des foo serveur et serveur barre car ils ont besoin d'accéder à mysql et mongodb. Pour y parvenir, j'introduis un rôle hosts:
# roles/hosts/tasks/main.yml
---
- name: change hosts
template: src=hosts.j2 dest=/etc/hosts
# roles/hosts/templates/hosts.j2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{% for item in hostvars %}
{{ hostvars[item]['ansible_ssh_host'] }} {{ item }}
{% endfor %}
Le problème est que quand je lance
ansible-playbook foo.yml
Le /etc/hosts sur la cible ne contient que l'adresse ip et le nom d'hôte de l'hôte actuel, foo-serveur dans ce cas.
Ma question est:
Comment puis-je obtenir tous les hôtes dans l'inventaire quand je lance playbook contre un seul d'entre eux?
Ou pourriez-vous suggérer quelques solutions de rechange que j'ai l'idée erronée à la première place.
Les alternatives me viennent à l'esprit sont:
Faire de configuration des hôtes d'une personne playbook à l'encontre de tous les hôtes comme
---
- name: Configuring hosts
hosts: all
user: root
roles:
- hosts
L'inconvénient est que j'ai besoin d'exécuter ce playbook avant les autres et cela ne semble pas une bonne façon de l'utiliser rôles.
OriginalL'auteur Yugang Zhou | 2014-11-14
Vous devez vous connecter pour publier un commentaire.
En effet c'est bizarre, car même les docs disent :
Je comprends de ce que vous ne pourriez pas obtenir faits recueillis si l'hôte n'a pas été "interrogé" encore, mais vous devriez quand même voir les variables définies dans l'inventaire (et de groupe/d'hôte var).
Peut-être vous devriez pousser à la liste de diffusion.
Dans le même temps, vous pouvez résoudre votre problème à l'aide de
groups['all']
en boucle vos hôtes à la place :OriginalL'auteur leucos