Est-ce que quelqu'un sait comment faire quelque chose (comme attendre le port/démarrage du nœud géré) AVANT rassembler les faits? Je sais que je peux désactiver la collecte de faits
gather_facts: no
et PUIS attendre le port mais que se passe-t-il si j'ai besoin des faits tout en devant encore attendre que le nœud démarre?
La collecte de faits équivaut à exécuter le module setup
. Vous pouvez collecter manuellement des faits en l'exécutant. Ce n'est pas documenté, mais ajoutez simplement une tâche comme celle-ci:
- name: Gathering facts
setup:
En combinaison avec gather_facts: no
au niveau du playbook, les faits ne seront récupérés que lorsque la tâche ci-dessus est exécutée.
Les deux dans un exemple de playbook:
- hosts: all
gather_facts: no
tasks:
- name: Some task executed before gathering facts
# whatever task you want to run
- name: Gathering facts
setup:
Quelque chose comme ça devrait fonctionner:
- hosts: my_hosts
gather_facts: no
tasks:
- name: wait for SSH to respond on all hosts
local_action: wait_for port=22
- name: gather facts
setup:
- continue with my tasks...
Le wait_for s'exécutera localement sur votre hôte ansible, en attendant que les serveurs répondent sur le port 22, puis le module de configuration effectuera la collecte des faits, après quoi vous pourrez faire tout ce que vous devez faire.
J'essayais de comprendre comment provisionner un hôte à partir d'ec2, attendre que ssh apparaisse, puis exécuter mon playbook contre. C'est fondamentalement le même cas d'utilisation que vous. Je me suis retrouvé avec ce qui suit:
- name: Provision App Server from Amazon
hosts: localhost
gather_facts: False
tasks:
# #### call ec2 provisioning tasks here ####
- name: Add new instance to Host group
add_Host: hostname="{{item.private_ip}}" groupname="appServer"
with_items: ec2.instances
- name: Configure App Server
hosts: appServer
remote_user: ubuntu
gather_facts: True
tasks: ----configuration tasks here----
Je pense que la terminologie ansible est que j'ai deux jeux dans un playbook, chacun fonctionnant sur un groupe d'hôtes différent (localhost et le groupe appServer)