Come testare lo script di provisioning della VM senza provisioning


10

Attualmente sono in uno stato che i test mi costano denaro e molto tempo ...

Background: sto implementando VM su softlayer e sto usando uno script post-deployment (bash) che installerà tutti i software di cui ho bisogno dopo che la VM è pronta. Il problema è che posso testare questo script solo distribuendo una VM, e al momento ci vogliono circa 4 ore per terminare lo script ... Quindi ogni modifica che faccio devo creare una nuova VM (costa denaro) e aspettare circa 4 ore per vedere se lo script è rotto o no ... Questo sta diventando caotico e non sarò in grado di andare avanti se rimango così.

Ho bisogno di un nuovo modo per affrontare questo tipo di situazione ed essere in grado di testare lo script di provisioning più rapidamente e senza dover distribuire una nuova macchina virtuale ogni volta.

Conoscete qualche strumento per aiutarmi in questo scenario?


4
Non è possibile testare lo script di provisioning (bash) su una macchina virtuale di sviluppo locale eseguendolo localmente?
Rekovni,

3
Questo è un posto dove brilla un cloud privato. Acquistarne uno e configurarlo potrebbe costarti meno di quello che stai attualmente facendo. Esegui i numeri. Guarda cosa ha senso per te.
pulcini,

Risposte:


10

Vedo alcune opzioni:

  • Usa Vagrant per creare le tue VM; separa il processo di creazione della VM (incluso il sistema operativo di base) e l'effettivo provisioning. Ha anche alcune opzioni per eseguire determinate fasi di provisioning solo in determinate circostanze.
  • Usa Ansible, Puppet o qualcosa del genere per passare a una modalità di provisioning in cui non fai sempre le stesse cose, ma solo ciò che è necessario. Ciò significa che è possibile avviare il lavoro e, alla prima parte non riuscita, interrompere. Correggi quella parte, quindi continua.
  • Usa Docker. Questo è leggermente diverso dall'approccio Vagrant / Ansible in quanto crea contenitori (che non è necessario, per quanto ne so). Ha il vantaggio, oltre all'approccio Ansible, di darti un processo di sviluppo graduale e molto fine. Cioè, se un passo fallisce, hai ancora tutte le immagini che portano a quello, quindi durante lo sviluppo, con un po 'di disciplina, diventi davvero molto, molto velocemente.

Tutti questi strumenti fanno molto di più di quello che ti serve, ma tutti ti danno modo di svolgere il tuo lavoro in modo incrementale. Vagrant, Ansible e Docker sono abbastanza facili da imparare, per quanto mi riguarda (fintanto che sei in modalità Dev / Test, le parti "interessanti" iniziano quando vai in produzione). Ansible è molto minimalista e non ha bisogno di altro che di una connessione ssh. Vagrant e Docker potrebbero non essere fattibili nella tua infrastruttura, lo vedrai rapidamente.


6

http://www.vagrantup.com

È possibile utilizzare vagrant per distribuire macchine virtuali sul laptop locale.

Puoi anche verificare se è possibile dividere lo script in parti più piccole, quindi non ci vorranno quattro ore per testarlo.


5

Se il test a livello locale non è un'opzione, l'approccio più diretto sarebbe quello di utilizzare gli snapshot / backup del volume del disco a proprio vantaggio. Questi avranno comunque un costo di $$$, ma a lungo termine ti faranno risparmiare tempo. Dovresti quindi separare il tuo script bash in diversi segmenti / script di lavoro che possono essere testati singolarmente. Una volta eseguito il provisioning del server, eseguire uno script, quindi scattare un'istantanea. Se ha esito positivo, esegui lo script successivo, scatta un'istantanea, quindi risciacqua e ripeti. Se lo script non riesce, modifica lo script, ripristina l'ultimo snapshot riuscito, quindi riprova.

NOTA: non sono sicuro che sia possibile scattare istantanee di dischi di macchine virtuali in IBM Cloud / Softlayer, ma sembra che sia possibile creare un'immagine VM abbastanza facilmente.

Backup delle immagini di macchine virtuali

È possibile eseguire il backup di un'immagine di macchina virtuale nella propria istanza. Questa funzione crea una copia dell'immagine della macchina virtuale e della configurazione cloud che può essere ripristinata in seguito. Inoltre, è possibile gestire queste immagini di backup. I dettagli sull'immagine di backup sono i seguenti:

L'immagine di backup è una copia esatta dell'immagine della macchina virtuale e della configurazione cloud. Non viene eseguita la pulizia dell'immagine.

  • L'immagine di backup non può essere distribuita come nuova istanza. Può essere utilizzato solo per ripristinare l'immagine della macchina virtuale e la configurazione cloud associate.

  • Solo il proprietario del progetto (o un amministratore) ha accesso per ripristinare le immagini della macchina virtuale di backup e la macchina virtuale di backup.

  • Se si utilizza un cloud OpenStack, è consentita solo un'operazione di backup dell'istanza alla volta. Se un altro utente sta eseguendo un backup e ne avvii uno nella stessa istanza, ricevi un errore che indica che c'è una richiesta in conflitto. Per eseguire un backup, è necessario attendere fino al termine dell'altro backup.

  • Le istanze di OpenStack PowerVM® e z / VM® non supportano questa azione.

  • Se l'istanza viene eliminata utilizzando IBM® Cloud Manager con OpenStack, vengono eliminati anche i backup associati.

https://www.ibm.com/support/knowledgecenter/en/SST55W_4.1.0/liacb/liacbsaverestorevsvmw.html

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.