Come si applicano le pratiche di sviluppo come il controllo delle versioni, i test e l'integrazione / implementazione continue all'amministrazione del sistema?


18

Immagina di gestire un numero di server con un numero di servizi diversi che viene utilizzato da un numero di persone. Ora supponi di voler riconfigurare o sostituire alcuni software su uno di quei server. Ovviamente non vuoi lavorare su server in produzione.

Se si trattasse di una modifica del codice, come sviluppatore, farei la modifica sulla mia macchina di sviluppo locale, la testerei localmente e commetterei la modifica in un sistema di controllo della versione. Le modifiche potrebbero quindi essere implementate in un ambiente di gestione temporanea, ulteriormente testate e infine distribuite in un ambiente di produzione. Sarebbe anche facile per me tornare indietro, se necessario.

In generale o in particolare, come si ottiene questo risultato nell'amministrazione del sistema?

(La prima cosa che mi viene in mente è usare le macchine virtuali e mettere le immagini delle macchine virtuali nel controllo della versione, ma sono sicuro che ci sia molta letteratura e soluzioni intelligenti di cui non sono attualmente a conoscenza.)


Stai chiedendo strumenti tecnici o framework per gestire questo tipo di cose? Perché sarebbe difficile parlare di quest'ultima opzione senza menzionare cose come il cambiamento e la gestione dei rilasci dalla disciplina ITIL.
Rob Moir,

@ DJPon3 Mi piacerebbe conoscere l'approccio generale (come pensarci) e gli strumenti per farlo. Sentiti libero di usare il mio ultimo paragrafo come punto di partenza.
arex1337,

Risposte:


15

La risposta breve è "Gestione della distribuzione del sistema operativo", "Gestione della configurazione" e "Pacchetto software". Segue una risposta lunga.

Vorrei aggiungere alla risposta di Daniel Pittman una suddivisione di ciò che costituisce un "sistema" nell'amministrazione dei sistemi.

Un sistema o un ambiente comprende:

  • server
  • Sistema operativo
  • Configurazione
  • Pacchetti fornitore; e
  • Pacchetti locali

Avvolgere questi saranno processi come:

  • Distribuzione o imaging del sistema operativo
  • Gestione della configurazione
  • Gestione dei pacchetti software
  • Revisione / logging
  • Monitoraggio
  • I backup

E ti piacerebbe che questi si combinassero insieme per aiutarti a raggiungere obiettivi non funzionali come:

  • ripetibilità
  • manutenibilità
  • Misurabilità
  • Prestazione
  • Trackability
  • testabilità
  • Mutevolezza

Questa è una rapida discarica del cervello. Sono sicuro che potrebbe essere aggiunto di più a tutte le liste.

La tua domanda tocca alcuni di questi senza usare le parole specifiche. Ad esempio, si desidera essere in grado di distribuire facilmente e ripristinare, ad esempio, la manutenibilità; vuoi farlo in un ambiente di test e testare fino a quando non passa cioè ripetibilità, testabilità e misurabilità; stai pensando di mettere le immagini VM nel controllo della versione perché desideri la ripetibilità delle distribuzioni del sistema operativo e della configurazione.

Ci sono molti strumenti per assisterti in questo, alcuni dei quali menzionati da Daniel. Alcuni altri sono:

  • Kickstarts (basato su RedHat), Preseed (basato su Debian), WDS (MS Windows) per la distribuzione di ambienti operativi noti
  • Spacewalk / Satellite (basato su RedHat), Criteri di gruppo (MS Windows) per la configurazione e la gestione dei pacchetti
  • Sistemi di packaging YUM e APT per la generazione, la distribuzione, l'aggiornamento e la rimozione di pacchetti (set di file binari, dati e configurazione che comprendono un software)
  • Nagios, OpenNMS e SCOM per il monitoraggio
  • Amanda, Bacula e Windows Backup Server per i backup
  • Munin, PCP e Hyperic per il monitoraggio delle prestazioni
  • CVS, SVN, GIT o Bazaar per il controllo delle versioni
  • Hudson e Jenkins per la gestione degli edifici
  • Selenio e robot per i test
  • Bugzilla, Request Tracker e Jira per la registrazione, comunicazione e tracciamento

Ancora una volta, questo non è un elenco completo, ma qualcosa che tengo nella mia testa per guidarmi e speriamo che possa aiutarti anche tu.


Che cos'è Marvin? Non riesco a trovare un riferimento ad esso, o è un errore di battitura?
thelsdj

s / Marvin / Hudson / - grazie per aver individuato @thelsdj :-)
vicino

16

Disclaimer: sono uno degli sviluppatori di Puppet.

Il modo ovvio è semplicemente applicare i concetti: definire un ciclo di sviluppo / test / produzione e spingere i cambiamenti attraverso di essi. Utilizzare il controllo versione per tenere traccia dei sistemi.

In breve tempo, l'avvio di quel percorso porta a scoprire che vuoi davvero strumenti che automatizzino queste cose - essenzialmente, che vuoi automatizzare l'amministrazione dei sistemi, in modo da non usare quelle tecniche su macchine, le usi sul sistema che gestisce le macchine.

Strumenti come Chef , Puppet , Salt e CFEngine sono tutti strumenti popolari per rispondere a quel secondo bisogno. Funzionano nella direzione generale di trasformare l'amministrazione dei sistemi in una soluzione centrale che è possibile controllare e testare in versione.

Il movimento DevOps è un'altra fonte di buone informazioni su come farlo. Mentre il precetto è una migliore cooperazione tra gli sviluppatori e il personale operativo, tende anche in questa stessa direzione.


15
Ora sappiamo chi molestare riguardo alle nostre domande sulle marionette ...
ewwhite,

1

In un mondo Windows, questi problemi relativi alla gestione del ciclo di vita delle applicazioni vengono risolti con System Center 2012.

In System Center Virtual Machine Manager (SCVMM), i servizi sono definiti usando "Modelli di servizio" (ad es. Un classico servizio a tre livelli) e gli ambienti di esecuzione sono definiti come "Nuvole" (ad es. Sviluppo, gestione temporanea, produzione). I modelli di servizio possono essere aggiornati e implementati (in modo automatizzato) su cloud diversi. Sotto le coperte, SCVMM si occupa del provisioning, della distribuzione e della configurazione dell'hardware virtualizzato (VM ecc.) E del software (SO, componenti delle app ecc.).

System Center Service Manager è il pezzo che lo unisce dal punto di vista del processo. Ad esempio, la gestione dei problemi e il controllo delle modifiche.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.