Sto cercando di far funzionare Ansible --limit e per farlo ho bisogno di informazioni sugli altri host, che sto memorizzando nella cache con fact_caching. Quale comando devo eseguire in modo che raccolga semplicemente tutti i fatti su tutti gli host e li memorizzi nella cache, senza eseguire alcuna attività? Qualcosa come lo setup module sarebbe perfetto se memorizzasse i fatti raccolti, ma sembra che non lo sia.Il modo più veloce per raccogliere i dati nella cache dei fatti
risposta
Ecco come mi piacerebbe risolvere il problema:
1.- Abilita fatti la raccolta sul vostro playbook (site.yml):
gather_facts: yes
2.- Abilita facts caching su ansible.cfg:
2.1.- Opzione 1 - Utilizzare questo se si ha il tempo di installare Redis:
[defaults]
gathering = smart
fact_caching = redis
# two hours timeout
fact_caching_timeout = 7200
2.2.- Opzione 2 - Usare questo per testare in questo momento è semplice, ma più lento di Redis:
[defaults]
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp/facts_cache
# two hours timeout
fact_caching_timeout = 7200
3.- Update o creare la cache fatti. Per fare ciò, creare un nuovo ruolo (aggiornamento della cache) con una sola attività: eseguire ping. Usiamo ping perché è il compito più semplice e veloce ansible così ci aiuterà aggiornare la cache veramente veloce:
- name: Pinging server to update facts cache
ping:
Saluti,
Il modo più veloce sarebbe quello di utilizzare Ansible fact caching introdotto nella versione 1.8. Richiede l'uso di un server redis per archiviare i fatti, ma ti consente di memorizzare i fatti tra le esecuzioni delle playbook. Come descrive la documentazione:
Immaginate, per esempio, un'infrastruttura molto grande con migliaia di host. La cache di fatti potrebbe essere configurata per l'esecuzione notturna, ma la configurazione di un piccolo gruppo di server potrebbe essere eseguita ad-hoc o periodicamente durante il giorno. Con il caching dei fatti abilitato, non sarebbe necessario "colpire" tutti i server per fare riferimento a variabili e informazioni su di essi.
Il problema con --limit è che limiterà tutti gli host che si ansible interagirà con, in modo che limiterà anche quello speciale gruppo ospite come all
avrà un impatto. Se non è stato utilizzato --limit ma invece usato gruppi di host allora si potrebbe fare qualcosa di simile:
---
- hosts: all
tasks: []
- hosts: my_host_group
tasks:
- name: task1
...
- name: task2
...
In questo esempio, il primo gioco costringerebbe la raccolta di fatti per tutti gli host che avete dato voi specificato hosts: all
. La seconda riproduzione eseguirà quindi le attività desiderate sugli host nel gruppo my_host_group
.
Ho già abilitato il caching dei fatti (tramite json piuttosto che redis) e usiamo già gruppi di host. Usiamo anche --limitare a volte. Stavo cercando un modo per aggiornare la cache dei fatti senza eseguire l'intero playbook. –
Creazione di un nuovo manuale con una sola riga:
- hosts: all
e la sua esecuzione raccoglie tutti i fatti, e se fact_caching è attiva, li memorizzerà nella cache per utilizzarli nei prossimi playbook con --limit.
- 1. Ansible - azioni PRIMA di raccogliere i dati
- 2. C'è un modo migliore per raccogliere i dati di Twitter?
- 3. Il modo più veloce per scrivere dati durante la produzione
- 4. Modo più veloce per inserire simultaneamente i dati in MySQL
- 5. Memorizzazione nella cache dei dati nei graal
- 6. Il modo più veloce per scrivere enormi dati nel file
- 7. Prefetching dei dati nella cache per x86-64
- 8. Modo idiomatico per raccogliere e segnalare più eccezioni in Python
- 9. Visualizza i dati nella cache in System.Web.HttpRuntime.Cache
- 10. Il modo più veloce per azzerare i valori bassi dell'array?
- 11. Il modo più veloce per estrarre i frame usando ffmpeg?
- 12. Il modo più veloce per rimuovere i caratteri dalla stringa
- 13. Cache o registri - che è più veloce?
- 14. Il modo più veloce per decomprimere i bit (sotto byte) dei numeri dal file
- 15. Il modo più semplice per memorizzare nella cache i risultati delle query MySQL usando PHP?
- 16. Il modo più veloce per trasferire i dati della tabella Excel su SQL 2008R2
- 17. SQLite - Il modo più veloce per leggere i dati dal database SQLite?
- 18. Come memorizzare nella cache il contenuto in UIWebView per un caricamento più veloce in seguito?
- 19. Il modo più veloce per ottenere i dati della directory in .NET
- 20. Modo più veloce/one-liner per raccogliere duplicati in Ruby Array?
- 21. Qual è il modo più veloce per filtrare i dati da ArrayList?
- 22. Gestione di più tabelle dei fatti in Qlikview
- 23. Memorizzazione nella cache dei dati JSON in C# MVC3
- 24. È questo il modo più veloce per raggruppare in Panda?
- 25. Il modo più veloce per comunicare tra C++ e C#
- 26. Struttura dati per un'operazione più veloce contiene()?
- 27. Quale è più veloce/migliore per la memorizzazione nella cache, il file system o Memcached?
- 28. La tecnica più veloce per eliminare i dati duplicati
- 29. Scrive dati di grandi dimensioni per il problema di memorizzazione nella cache dei file
- 30. strategia di cache per i dati interrogati
Avevo già fatto il resto, ma il comando ping era quello che stavo cercando. Inoltre, gather_facts è sì per impostazione predefinita. –
Come posso creare un ping che ping tutti i server nel nostro inventario? –
Facile: 1) set: "hosts: all" sul tuo sito.yml 2) set: "ruoli: cache-update" sul tuo sito.yml Quando eseguito eseguirà l'attività ping del tuo rol su tutti i tuoi ospiti. – alfredocambera