Introduzione a Vagrant

Panoramica

Vagrant ti consente di gestire e controllare facilmente più macchine virtuali. È costruito su VirtualBox e VMWare e offre molte funzionalità interessanti. È possibile creare ambienti di sviluppo isolati, sperimentare nuovi prodotti e tecnologie, installare nuove versioni di pacchetti esistenti, creare il proprio data center privato sul laptop ed eseguire diversi sistemi operativi. Tutto ciò che è disponibile in un silo facile da gestire e totalmente sicuro che non può interferire con le attività principali e il sistema operativo. 

In questo tutorial, ti mostrerò come configurare Vagrant e iniziare a esplorare la ricchezza di opportunità che offre.

Vagrant ha recentemente aggiunto il supporto per i contenitori Docker, ma non lo discuterò in questo tutorial.

Installazione

  1. Scarica il VirtualBox gratuito per il tuo sistema operativo dal sito Web di VirtualBox.
  2. Dopo il download, esegui il file binario e installalo.
  3. Scarica Vagrant.
  4. Di nuovo, basta eseguire il binario per installarlo.

Inizializzazione di Vagrant

Vagrant è uno strumento basato sulla riga di comando. Una volta completata l'installazione, apri una finestra della console e crea una nuova directory chiamata 'vagrant_intro'.

cd ~ mkdir vagrant_intro cd vagrant_intro

Questa sarà la tua directory di lavoro da ora in poi. All'interno della directory vagrant_intro, digitare:

vagrant init ubuntu / trusty64

Dovresti vedere il seguente testo:

Un 'Vagrantfile' è stato inserito in questa directory. Ora sei pronto per 'vagare su' il tuo primo ambiente virtuale! Per ulteriori informazioni sull'utilizzo di Vagrant, leggere i commenti nel Vagrantfile e la documentazione su "vagrantup.com".. 

Il "Vagrantfile" generato è un file Ruby che controlla le tue [una o più] macchine virtuali. È un file piuttosto grande con molte opzioni commentate. Passerò sopra quelli importanti più tardi, ma proviamo prima. Genere: vagabondo.

Ciò causerà a Vagrant il download di una scatola virtuale preparata con la versione a 64 bit di Ubuntu 14.04 (affidabile). Ci vorrà un po '(diversi minuti) e sputi un sacco di testo sul tuo schermo. Mentre Vagrant sta agitandosi, parliamo di ciò che una VM è in termini pratici.

Una vista (che di solito adotto) è che la VM simula un server remoto. Dovresti comunicare solo con la sua interfaccia di rete. Ciò è particolarmente utile per testare sistemi distribuiti in cui non si dovrebbe sfruttare alcuna interfaccia speciale per host VM perché non saranno disponibili nei sistemi di produzione. Quando si opera in questa modalità, normalmente si comunica con la VM su SSH (possibilmente con uno strumento come Ansible).

Un'altra vista, che è anche completamente corretta e valida, è pensare alla VM come a un altro SO in esecuzione sul computer locale. Questa vista è utile se vuoi sviluppare direttamente sul tuo OS di destinazione. 

Ad esempio, una configurazione molto comune è quella di far scrivere agli sviluppatori il proprio codice su un Mac utilizzando Mac OS X, ma distribuire in un ambiente di produzione Linux. Se vuoi assicurarti che il codice che sviluppi sul Mac funzioni correttamente su Linux senza doverlo distribuire su un server remoto, puoi sfruttare le cartelle sincronizzate in cui leggi e scrivi file sul sistema operativo host (tipicamente Mac OS X) e averli immediatamente disponibili sul SO guest (tipicamente Linux). 

Questo elimina il passaggio "deploy" dal ciclo edit-deploy-test quando si lavora con sistemi remoti. Rimuove anche la necessità di un ambiente di staging espansivo che è una risorsa condivisa e deve essere gestito con attenzione da tutti gli sviluppatori. Con una VM locale, nessuno sta per violare l'ambiente e puoi sperimentare quanto vuoi senza preoccuparti di rompere il codice di qualcun altro.

Puoi, naturalmente, utilizzare entrambe le cartelle sincronizzate e ancora SSH nella tua VM. Ci sono altre opzioni che sfocano i bordi come la mappatura delle porte.

Il Vagrantfile

Ecco una versione ridotta del Vagrantfile con alcune delle opzioni più importanti:

Vagrant.configure (2) do | config | config.vm.box = "ubuntu / trusty64" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "private_network", ip: "192.168.33.33" config.vm.synced_folder "~ / vagrant_intro / data "," / vagrant_data "machine.vm.hostname =" gigi.playground.local "

La sintassi è Ruby, che ti dà molta flessibilità se vuoi aggiungere condizionali e loop. Ciò è particolarmente utile se si utilizza Vagrantfile per gestire un cluster di macchine virtuali.

Connessione alla tua VM

È possibile connettersi alla VM in esecuzione digitando: sergente vagabondo.

Questo lancerà una sessione SSH e ti permetterà di giocare con la tua VM in modo interattivo.

Benvenuti in Ubuntu 14.04.3 LTS (GNU / Linux 3.13.0-74-generico x86_64) * Documentazione: https://help.ubuntu.com/ Informazioni sul sistema a partire da martedì 9 febbraio 17:17:28 UTC 2016 Caricamento del sistema: 0.97 Processi: 80 Utilizzo di /: 3.4% di 39.34 GB Utenti loggati: 0 Utilizzo memoria: 25% Indirizzo IP per eth0: 10.0.2.15 Utilizzo dello swap: 0% Grafico questi dati e gestisci questo sistema su: https: // landscape .canonical.com / Ottieni supporto cloud con Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 0 i pacchetti possono essere aggiornati. 0 aggiornamenti sono aggiornamenti di sicurezza. 

Una volta dentro la tua VM, puoi fare praticamente tutto quello che vuoi: eseguire comandi, creare utenti, creare file e directory, ecc. Sei loggato come utente 'vagabondo', che ha privilegi sudo, in modo da avere il pieno controllo sul VM.

Scambio di dati con la tua VM

Vagrant esegue automaticamente il mapping della cartella sul computer host che contiene Vagrantfile nella directory / vagrant all'interno del computer guest. Ciò ti consente di modificare i file nel tuo editor preferito sul computer host e di averli disponibili nel guest o in alternativa di scrivere al guest un file di output nella directory / vagrant e di sfogliare la cartella sincronizzata sull'host.

Mappatura delle porte ospiti

Spesso vorrete eseguire alcune applicazioni che comunicano attraverso una porta. Il più comune è un server web. Vagrant consente di inoltrare le porte guest al computer host. 

Ad esempio, nella configurazione precedente, la porta ospite 80 viene mappata alla porta 8080 dell'host. Ciò significa che qualsiasi servizio in esecuzione sulla porta 80 del guest può essere utilizzato come host locale: 8080 sul computer host. 

Vediamo una dimostrazione. Innanzitutto, metto un semplice file index.html nella directory ~ / vagrant_intro sull'host che viene sincronizzato con la directory / vagrant_data sull'ospite.

  

Vagrant è fantastico!

Quindi, dopo aver inserito SSH nel computer guest, eseguirò un piccolo server web nella directory / vagrant_data:

vagrant @ vagrant-ubuntu-trusty-64: / vagabondo $ sudo python3 -m http.server 80 Serve HTTP su 0.0.0.0 porta 80 ... 

Questo server HTTP Python one-liner serve semplicemente qualsiasi file statico nella sua directory di lavoro. Ora, dato che la porta 80 è mappata alla porta 8080 dell'host, è possibile navigare su localhost: 8080 e visualizzare il risultato dell'esecuzione del server.

Connessione alla VM attraverso la rete

È inoltre possibile connettersi alla VM tramite il suo indirizzo IP come se fosse un server veramente separato. Aggiungo sempre un hostname a / etc / hosts quindi non devo usare l'indirizzo IP nudo e perché il codice che sto testando è solitamente configurato con il nome host di un sistema di produzione. Questo è ciò che devi aggiungere al tuo file / etc / hosts:

# Importante sistema di produzione 192.168.33.33 production.server.com

Ora, qualsiasi accesso di rete a "production.server.com" sulla tua macchina verrà inviato alla tua VM.

In questo caso, i programmi che solitamente si collegano al server remoto sono configurati con l'indirizzo IP o il nome host VM. Prima di Vagrant 1.7, c'era una singola chiave privata che poteva essere usata per tutte le macchine. Si è trattato di un serio problema di sicurezza quando le persone hanno esposto la propria macchina virtuale su reti pubbliche e chiunque poteva inserire SSH e ottenere l'accesso come root. A partire dalla versione 1.7, Vagrant genera una nuova coppia di chiavi per ogni macchina. Per scoprire dove si trova la chiave privata per la tua macchina, esegui questo comando: sr-config vagabondo.

Ecco come puoi SSH direttamente alla VM:

ssh -o UserKnownHostsFile = / dev / null -o CheckHostIP = no -o StrictHostKeyChecking = no -i ~ / vagrant_intro / .vagrant / machines / default / virtualbox / private_key [email protected]

Gestire le tue scatole virtuali

Vagrant fornisce molti comandi per gestire le scatole. Esploriamo. Per visualizzare un elenco di comandi, digitare: vagabondo.

Uso: vagrant [opzioni]  [] -v, --version Stampa la versione ed esce. -h, --help Stampa questa guida. Comandi comuni: box gestisce le caselle: installazione, rimozione, ecc. Connettersi connettersi a un ambiente Vagrant condiviso in remoto distruggere fermate ed eliminare tutte le tracce della macchina vagabonda stato delle uscite di stato globale ambienti Vagrant per questo utente interrompe l'aiuto della macchina vagabonda mostra l'aiuto per un sottocomando init inizializza un nuovo ambiente Vagrant creando un login Vagrantfile accedi ai pacchetti di pacchetti Atlas di HashiCorp un ambiente vagabondo in esecuzione in un plugin box gestisce i plugin: installa, disinstalla, aggiorna, ecc. l'ambiente verso una destinazione configurata rdp si connette alla macchina tramite RDP ricarica riavvia la macchina vagrant, carica la nuova configurazione Vagrantfile riprende la ripresa di una macchina vagabonda sospesa scp copia i dati in una scatola tramite condivisione SCP condividi l'ambiente Vagrant con chiunque nel mondo ssh si connette alla macchina tramite SSH ssh-config restituisce la configurazione valida di OpenSSH per connettersi alle uscite di stato della macchina st l'accusa della macchina sospesa sospende sospende l'avvio della macchina e fornisce la versione dell'ambiente vagabondo stampa la versione attuale e più recente di Vagrant Per assistenza su ogni comando individuale 'COMANDO vagabondo -h' Sono disponibili sottocomandi aggiuntivi, ma sono più avanzati o non comunemente usati . Per vedere tutti i sottocomandi, esegui il comando 'vagrant list-commands'. 

Ho trattato alcuni dei comandi più comuni in precedenza. Il scatola i comandi ti permettono di gestire le tue scatole direttamente. Ad esempio, per visualizzare tutte le VM sulla macchina, digitare lista di scatole vagabonde. È possibile aggiornare le caselle alla versione più recente con aggiornare. Il ricaricare il comando è molto utile se cambi il tuo Vagrantfile. Finalmente, fornitura ti consente di eseguire il provisioning, configurare e installare il software sulla tua VM utilizzando vari provisioner tra cui Chef, Puppet, Salt, il mio preferito Ansible e persino Docker.

Conclusione

Vagrant ti offre un computer facile da usare all'interno del computer. È possibile gestire una flotta di VM per scopi diversi e Vagrantfile è la tua interfaccia per specificare come deve comportarsi la VM. Divertiti ad esplorare Vagrant. Ho appena graffiato la superficie qui.