Quali strumenti / metodi / pratiche conciliano le versioni distribuite dei componenti?

4

Abbiamo un problema nella nostra organizzazione dove abbiamo la necessità di sapere "con certezza molto alta" quali versioni specifiche di ogni app / servizio web / ecc. viene distribuito su un determinato nodo e / o ambiente in qualsiasi momento specifico.

Alcune idee sono state prese a calci in giro, come ad esempio:

  • Uno strumento di distribuzione personalizzato supportato da un DB e su ogni distribuzione registra il numero di versione sul DB (in modo che possiamo eseguire una query DB e dire " Ehi, sembra il Web di Fizz Buzz Il servizio ha la versione 1.34.1 distribuita nel suo ambiente QA / TEST ")
  • Un tipo di plugin "build info" che inietta le informazioni dell'elemento della configurazione in un file di metadati (XML / JSON / qualunque) e che espone alcuni URL dell'amministratore da cui è possibile recuperare tali informazioni. Ad esempio, la build CI crea la versione 1.34.2 del "Fizz Buzz Web Service" e crea un file buildinfo.json all'interno del suo binario. Quindi, una volta distribuito il servizio Web, alcuni controller sul lato server possono leggere quel file JSON ed esporlo come informazioni a, diciamo, http://myapp.example.com:8081/buildinfo , ecc.

Sebbene questi metodi possano funzionare, sento che stiamo cercando di reinventare la ruota qui. Quindi chiedo: ci sono strumenti / metodi / pratiche che affrontano questo già? Voglio solo la possibilità di eseguire un tipo di tipo di query che riporta quale versione di un componente (di nuovo, app Web, servizio Web, DB, qualunque sia) distribuita su un determinato nodo (VM) o ambiente (DEV, QA, PROD) .

    
posta smeeb 14.06.2016 - 17:03
fonte

2 risposte

1

Penso che potresti voler far apparire questa domanda a Server Fault e girarla: come fanno gli amministratori di sistema per le grandi aziende a sapere quali versioni di quale software è installato sulle loro macchine client. Potrebbe esserci una soluzione standard del settore che esamina, ad esempio, la versione delle DLL in una posizione predefinita su ciascuna macchina con cui funziona. Se esiste qualcosa del genere, immagino che sia una buona soluzione possibile.

Se si desidera eseguire il rollover, l'azienda per cui lavoro ha un server centrale che esegue installazioni e installazioni e tiene semplicemente traccia delle versioni distribuite. Il vantaggio è che funziona sia per client che per applicazioni web, non necessita di alcun accesso al server stesso oltre il momento della distribuzione e l'intero processo di build-and-deployment passa attraverso quella pipeline, quindi non c'è modo di aggirarlo facilmente .

    
risposta data 17.06.2016 - 09:00
fonte
0

Prima di tutto, ci sono strumenti là fuori che possono scansionare le porte e il traffico di rete per aiutarti a scoprire il tuo catalogo software, ma la linea di fondo è per essere estremamente accurata dovrai toccare ogni servizio web o applicazione e ridistribuirli per riportare correttamente le loro versioni di build e altre informazioni che vuoi da loro .. non importa ciò che il venditore ti dice che non è facile. Poiché non esiste un modo sistematico per determinare la versione o addirittura l'esistenza di un'applicazione, è necessario fare affidamento sull'analisi dei dati euristicamente raccolti. Se ci fosse un modo sistematico per determinare cosa è stato installato, il software anti-virus sarebbe stato un gioco da ragazzi.

La domanda che devi porre è "Quali configurazioni specifiche abbiamo di ogni app / servizio web / etc che viene distribuita su un dato nodo e / o ambiente in un dato momento?"

La seconda opzione sarebbe l'opzione preferita in quanto riporta sia la versione che la posizione dell'app, ma segnala anche che l'app è attiva e funzionante. Altre informazioni stat potrebbero essere incluse nel sondaggio. Inoltre, i file JSON possono essere richiamati tramite diversi protocolli, file, http, ftp, ecc. Ma come ho detto, non c'è un modo facile per uscire da questo.

    
risposta data 20.06.2016 - 21:36
fonte