when set_fact practices playbook hostvars gather facts debug best ansible ansible-facts

set_fact - Ansible-acciones ANTES de recopilar datos



debug ansible (3)

¿Alguien sabe cómo hacer algo (como esperar el puerto / arranque del nodo administrado) ANTES de reunir datos? Sé que puedo convertir la recopilación de hechos

gather_facts: no

y ENTONCES espere el puerto, pero ¿y si necesito los hechos mientras también necesito esperar hasta que el nodo se inicie?


Algo como esto debería funcionar:

- 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...

El wait_for se ejecutará localmente en su host ansible, esperando que los servidores respondan en el puerto 22, luego el módulo de configuración realizará la recopilación de datos, después de lo cual podrá hacer todo lo que necesite hacer.


Estaba intentando descubrir cómo aprovisionar un host de ec2, esperar a que salga ssh, y luego ejecutar mi libro de jugadas contra él. Que es básicamente el mismo caso de uso que tienes. Terminé con lo siguiente:

- 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----

Creo que la terminología de ansible es que tengo dos jugadas en un libro de jugadas, cada una operando en un grupo diferente de hosts (localhost y el grupo appServer)


Reunir hechos es equivalente a ejecutar el módulo de setup . Puede recopilar datos manualmente ejecutándolo. No está documentado, sino que simplemente agrega una tarea como esta:

- name: Gathering facts setup:

En combinación con gather_facts: no en el nivel de libro de jugadas, los hechos solo se obtendrán cuando se ejecute la tarea anterior.

Ambos en un libro de jugadas de ejemplo:

- hosts: all gather_facts: no tasks: - name: Some task executed before gathering facts # whatever task you want to run - name: Gathering facts setup: