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: