Progetto

Generale

Profilo

Segnalazione #773

Detect e visualizzazione fact ansible per le macchine

Aggiunto da Enrico Zini 4 mesi fa. Aggiornato 25 giorni fa.

Stato:
In elaborazione
Priorità:
Normale
Assegnato a:
-
Inizio:
28-06-2019
Scadenza:
% completato:

0%

Resolution:

Descrizione

Per le macchine per le quali abbiamo accesso come root, possiamo fare un giro di gather fact di ansible e mostrarne alcuni nell'interfaccia.

Questo può avere un'utilità generica e dare un meccanismo estensibile per raccogliere informazioni, tipo anche se una macchina è configurata con fuss-client.


Sottoattività

Segnalazione #855: Visualizzazione delle informazioni delle macchineNuovoElena Grandi


Segnalazioni correlate

correlata a fuss-manager - Segnalazione #738: Detect macchine configurate con fuss-client Chiuso 19-02-2019
correlata a fuss-manager - Segnalazione #829: Controllare che il caricamento degli stats non pialli l'esistente Chiuso 03-06-2019

Revisioni associate

Versione b7ef2212 (diff)
Aggiunto da Elena Grandi 3 mesi fa

Start running ansible to get setup data. refs: #773

Versione 56986e90 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Prototype a libvirt-based test environment. refs: #773

Versione a93fb9b3 (diff)
Aggiunto da Enrico Zini 3 mesi fa

more experiments made with libvirt. refs: #773

Versione 481999d1 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Refactored testnet. refs: #773

Versione f338a76d (diff)
Aggiunto da Enrico Zini 3 mesi fa

Moved everything to test_network/ except the CLI itself. refs: #773

Versione afe61568 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Assign IPs to domains. refs: #773

Versione 4c83eafc (diff)
Aggiunto da Enrico Zini 3 mesi fa

Updated test_network README. refs: #773

Versione 07fcfe58 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Wait for domains to be started. refs: #773

Versione 2de79d67 (diff)
Aggiunto da Enrico Zini 3 mesi fa

More flexible CLI and cleanup stderr noise. refs: #773

Versione 73656018
Aggiunto da Enrico Zini 3 mesi fa

Merge remote-tracking branch 'origin/t748' into t773. refs: #773

Versione dab4d894 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Added an ansible setup to run tests on the fuss-test-network machines. refs: #773

Versione ee9701d8 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Have the mock network activity match the test network hosts. refs: #773

Versione 0bb38c58 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Added host/group vars to connect to test machines. refs: #773

Versione 781ee8b9 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Moved test playbooks in playbooks/. refs: #773

Versione d928cc10 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Refactored playbook running so it can be wired into manager. refs: #773

Versione 95786b4d (diff)
Aggiunto da Enrico Zini 3 mesi fa

Started working on running playbooks. refs: #773

Versione 736ca041 (diff)
Aggiunto da Enrico Zini 3 mesi fa

remove nondeterminism. refs: #773

Versione e3946f63 (diff)
Aggiunto da Enrico Zini 3 mesi fa

Run playbooks and dispatch their output to the hosts involved. refs: #773

Versione ba911919 (diff)
Aggiunto da Elena Grandi 2 mesi fa

Start saving a cache of ansible facts. refs: #773

Versione aba68a39 (diff)
Aggiunto da Elena Grandi circa 2 mesi fa

Save a log of facts updates. refs: #773

Versione 7e4f32cf
Aggiunto da Enrico Zini circa 2 mesi fa

Merge branch 't773'. Fixes: #773

Versione 1b626377
Aggiunto da Enrico Zini circa 2 mesi fa

Merge branch 'master' into t773. refs: #773

Versione d5ceec06 (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

Added tabs to machine popup. refs: #773

Versione c7333675 (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

New RefreshFacts operation. refs: #773

Versione c481621a (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

Export facts in machine data. refs: #773

Versione 4cb35e9f (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

Added a button to refresh facts. refs: #773

Versione c4fc343b (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

Show last collected facts. refs: #773

Versione c24d3b68 (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

Show in the log when an operation is posted via API. refs: #773

Versione 1d8b6a22 (diff)
Aggiunto da Enrico Zini circa 2 mesi fa

Also show facts log in machine modal. refs: #773

Versione 8e3c92cf (diff)
Aggiunto da Elena Grandi circa 2 mesi fa

Add a timestamp to ansible facts data. refs: #773

Versione 4a866454 (diff)
Aggiunto da Elena Grandi circa 2 mesi fa

Find a machine in the store instead of looking up the mac for the name. refs: #773

Versione 4e9672b3
Aggiunto da Enrico Zini 25 giorni fa

Sync with master. refs: #773

Versione 426f13b0
Aggiunto da Enrico Zini 25 giorni fa

Merge to master; UI is not finished, but it needs some analysis to see what is the desired way to present facts. Refs: #773

Cronologia

#1 Aggiornato da Elena Grandi 4 mesi fa

  • Segnalazione #738: Detect macchine configurate con fuss-client correlata a aggiunto

#2 Aggiornato da Elena Grandi 4 mesi fa

  • Assegnato a impostata a Elena Grandi

Fare caching in memoria dei dati raccolti.

(nota: riassegnare poi ad Enrico per l'interfaccia)

#3 Aggiornato da Enrico Zini 4 mesi fa

I dettagli su dove trovare i fact sono in #738

#4 Aggiornato da Elena Grandi 3 mesi fa

  • Stato modificata da Nuovo a In elaborazione

#5 Aggiornato da Elena Grandi 3 mesi fa

  • Assegnato a modificata da Elena Grandi a Enrico Zini

Implementata la raccolta dei fact, branch t773. I test controllano la presenza di alcuni fact che mi paiono particolarmente utili, (quindi sono un posto dove è documentato come reperirli).

Ti ripasso il ticket per review, e per la parte di inserimento nell'interfaccia.

#6 Aggiornato da Enrico Zini 3 mesi fa

  • Assegnato a modificata da Enrico Zini a Elena Grandi

Grazie! Ho fatto refactoring per incastrare il tutto nel manager, in modo da poter mandare richieste e ricevere risultati.

Mi piacerebbe fare cache dei fact di ansible in un qualche storage, in modo da poterli sempre mostrare, ed eventualmente dare la possibilità di aggiornarli o aggiornarli periodicamente.

In teoria, lo store che immagazzina i dati effimeri potrebbe ascoltare HostFactsEvent e salvarsi facts. Se ti sembra una buona idea, puoi implementarlo?

#7 Aggiornato da Enrico Zini 3 mesi fa

In questo branch c'è il test tests.test_playbook.TestPlaybook.test_run_playbook che dipende da fuss-test-network, e viene saltato se fuss-test-network non è su.

Per tirare su la rete di test: fuss-test-network --start --verbose. Serve che l'utente sia nel gruppo libvirt, e che la directory indicata dall'opzione --storage
sia accessibile e scrivibile dal gruppo libvirt. Dovrebbe dipendere solo da libvirt-clients.

Siccome i test sono opzionali, non importa tirare su fuss-test-network; se un giorno hai un momento per provarlo, però, magari mi dici se da te parte senza problemi.

Ho cambiato la mock data source per produrre nomi, IP e MAC corrispondenti a quelli usati da fuss-test-network, cosí usando runserver si potranno effettivamente far girare playbook sulle macchine di prova.

#8 Aggiornato da Elena Grandi 2 mesi fa

  • Versione prevista modificata da 0.5 Run di playbook sui client a 0.6 Gestione di macchine spente

Sposto alla versione successiva per fare la release 0.5; qui manca da fare caching dei dati e poi ripassare ad enrico per l'interfaccia.

Al momento i fact vengono comunque visualizzati quando si è lanciato un playbook.

#9 Aggiornato da Elena Grandi circa 2 mesi fa

  • Assegnato a modificata da Elena Grandi a Enrico Zini

Backend del caching dei facts implementato, riassegno per review && merge (credo valga la pena mergiarlo per avere un "punto fisso") e poi implementazione dell'interfaccia.

#10 Aggiornato da Enrico Zini circa 2 mesi fa

Visto, discusso, mergiato su master. Lascio aperto il ticket assegnato a me per la parte di visualizzazione

#11 Aggiornato da Anonimo circa 2 mesi fa

  • Stato modificata da In elaborazione a Risolto
  • % completato modificata da 0 a 100

#12 Aggiornato da Enrico Zini circa 2 mesi fa

  • Stato modificata da Risolto a In elaborazione

#13 Aggiornato da Enrico Zini circa 2 mesi fa

  • Assegnato a modificata da Enrico Zini a Elena Grandi

In facts_loaded, the log is filled with information not taken from the event:

    @asyncio.coroutine 
    def facts_loaded(self, evt):
        ip = yield from self.name_to_ip(evt.name)
        mac = yield from self.ip_to_mac(ip)
        machine = self.machines.get(mac)
        old_facts_log = machine.facts_log.copy()
        machine.facts_log.append({
            'timestamp': time.time(),  
            'result': 'SUCCESS', 
            'details': {},
        })

Is it intentional? Ideally, I'd like to take the timestamp from the event, and set details to the actual facts.

#14 Aggiornato da Enrico Zini circa 2 mesi fa

Ah, I get it, the facts are stored only in the machine and not in the log, fair enough.

Would it make sense however to take the timestamp from the event, so it matches when the facts were actually collected?

#15 Aggiornato da Enrico Zini circa 2 mesi fa

Also, is it intentional that "facts" is not in STATS_MACHINE_FIELDS ?

#16 Aggiornato da Enrico Zini circa 2 mesi fa

Another feature request for the backend: machine.facts currently contains only the key ansible_facts; I'd like to have in it also the timestamp of its facts log, so that I can see how old are the facts and to which facts log they refer.

Presumably, they refer to the last successful entry in the facts log; still it would be nice to have the timestamp to see how old are the facts without iterating the facts log backwards.

#17 Aggiornato da Enrico Zini circa 2 mesi fa

Another issue: if the machine is switched off, facts_failed tries to look up its mac address to get the machine record to update. However, when the machine is off, IP to MAC resolution does not work, the mac variable is None, self.machines.get(mac) returns None and the rest of the method fails.

Would it be possible / a good idea to look up the machine in the store by name directly, both in facts_loaded and in facts_failed, instead of trying to resolve its ip and mac?

#18 Aggiornato da Elena Grandi circa 2 mesi fa

Enrico Zini ha scritto:

Also, is it intentional that "facts" is not in STATS_MACHINE_FIELDS ?

intenzionale sì, non sono sicura che sia la scelta giusta sul lungo periodo.

Se salvare o meno i facts su file credo che possa dipendere da quanto spesso li si richiede: se si tende a chiederli spesso forse non val la pena salvarli su file, se invece li si vuole richiedere più raramente vale sicuramente la pena.

Per il momento, credo che faccia comodo non averli salvati per non rendere completamente illeggibile lo stats file, cosa che di tanto in tanto è utile aprire per fare debugging.

#19 Aggiornato da Elena Grandi circa 2 mesi fa

  • Segnalazione #829: Controllare che il caricamento degli stats non pialli l'esistente correlata a aggiunto

#20 Aggiornato da Elena Grandi circa 2 mesi fa

  • Assegnato a modificata da Elena Grandi a Enrico Zini

Pushato t773 con le modifiche al backend:

  • il timestamp è generato sul server in un momento solo e passato dalle varie parti
  • la macchina a cui associare i facts è cercata per nome nello store anziché cercare di calcolarne l'ip.

Ho cercato di vedere se fosse facile ricevere già il mac dall'evento facts loaded, ma mi pareva che spostasse solo la ricerca anziché eliminarla, e quindi non ne valesse la pena.

#21 Aggiornato da Enrico Zini 25 giorni fa

  • Versione prevista modificata da 0.6 Gestione di macchine spente a 0.10 Prima validazione interfaccia

#22 Aggiornato da Enrico Zini 25 giorni fa

  • Assegnato a eliminata (Enrico Zini)

Fatto merge in master. I fact rimangono mostrati in modo grezzo, servirà capire in fase di ulteriore studio/validazione dell'interfaccia quale sia il modo piú utile per mostrare i fact.

Tolgo l'assegnazione del ticket finché non arriviamo a quella fase.

Esporta su Atom PDF