2015-06-25 14 views
29

Qualcuno sa come fare qualcosa (come attendere la porta/avvio del nodo gestito) PRIMA di raccogliere dati? So che posso girare fatti di raccolta fuoriAnsible - azioni PRIMA di raccogliere i dati

gather_facts: no 

e POI attesa per la porta, ma cosa succede se ho bisogno dei fatti ma anche ancora bisogno di aspettare fino a quando gli stivali dei nodi in su?

risposta

34

La raccolta di dati equivale all'esecuzione di setup module. È possibile raccogliere manualmente i dati eseguendoli. Non è documentato, ma è sufficiente aggiungere un compito come questo:

- name: Gathering facts 
    setup: 

In combinazione con gather_facts: no a livello playbook dei fatti sarà caricato solo in caso di sopra compito viene eseguito.

20

Qualcosa del genere dovrebbe funzionare:

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

Il wait_for eseguirà localmente sul vostro ospite ansible, in attesa che i server di rispondere sulla porta 22, quindi il modulo di configurazione si esibirà infatti la raccolta, dopo il quale è possibile fai qualsiasi altra cosa tu abbia bisogno di fare

1

Stavo cercando di capire come eseguire il provisioning di un host da ec2, attendere che ssh venga visualizzato e quindi eseguire il mio playbook contro di esso. Che è fondamentalmente lo stesso caso d'uso che hai. Ho finito con il seguente:

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

penso che la terminologia ansible è che ho due commedie in un playbook, ciascuno operante su un diverso gruppo di host (localhost, e il gruppo appserver)

Problemi correlati