Introducere în Vagrant

Prezentare generală

Vagrant vă permite să gestionați și să controlați cu ușurință mai multe mașini virtuale. Acesta este construit pe partea de sus a VirtualBox și VMWare, și oferă multe capabilități interesante. Puteți crea medii de dezvoltare izolate, puteți experimenta cu produse și tehnologii noi, puteți instala noi versiuni de pachete existente, puteți crea propriul centru de date privat pe laptop și puteți rula diferite sisteme de operare. Tot ce este disponibil într-un siloz ușor de administrat și complet sigur, care nu poate interfera cu principalele activități și cu sistemul de operare. 

În acest tutorial, vă voi arăta cum să configurați Vagrant și să începeți să explorați bogăția de oportunități pe care le oferă.

Vagrantul a adăugat recent și suport pentru containerele Docker, dar nu voi discuta acest lucru în acest tutorial.

Instalare

  1. Descărcați gratuit VirtualBox pentru sistemul dvs. de operare de pe site-ul VirtualBox.
  2. După descărcare, rulați binar și instalați-l.
  3. Descărcați Vagrant.
  4. Din nou, rulați binar pentru al instala.

Inițializarea vagabonților

Vagrantul este un instrument bazat pe linia de comandă. După ce ați terminat instalarea, deschideți o fereastră a consolei și creați un nou director numit "vagrant_intro".

cd ~ mkdir vagrant_intro cd vagrant_intro

Acesta va fi directorul dvs. de lucru de acum încolo. În interiorul directorului vagrant_intro, tastați:

vagrant init ubuntu / trusty64

Ar trebui să vedeți următorul text:

Un "Vagrant" a fost plasat în acest director. Sunteți gata să vă "vagrați" primul mediu virtual! Vă rugăm să citiți comentariile din Vagrant, precum și documentația "vagrantup.com" pentru mai multe informații despre utilizarea Vagrantului. 

Generat "Vagrantfile" este un fișier Ruby care controlează [una sau mai multe] mașini virtuale. Este un dosar destul de mare, cu multe opțiuni comentate. Voi trece mai departe cele importante, dar să încercăm mai întâi. Tip: vagrant sus.

Acest lucru va determina Vagrant să descarce o casetă virtuală pregătită cu versiunea Ubuntu 14.04 (de încredere) pe 64 de biți. Va dura ceva timp (câteva minute) și va scuipa pe ecran o mulțime de text. În timp ce Vagrantul se chinuie, să vorbim despre ceea ce este un VM în termeni practici.

O vizualizare (pe care o folosesc de obicei) este aceea că VM simulează un server la distanță. Ar trebui să comunicați cu el doar prin interfața sa de rețea. Acest lucru este util în special pentru testarea sistemelor distribuite, în care nu ar trebui să profitați de interfețele speciale de gazdă VM, deoarece acestea nu vor fi disponibile pe sistemele de producție. Când lucrați în acest mod, veți comunica în mod normal cu VM pe SSH (posibil cu un instrument ca Ansible).

O altă viziune, care este de asemenea corectă și validă, este să vă gândiți la VM ca pe un alt sistem de operare care rulează pe mașina dvs. locală. Această vizualizare este utilă dacă doriți să vă dezvoltați direct pe sistemul dvs. de destinație. 

De exemplu, o configurație foarte comună este ca dezvoltatorii să-și scrie codul pe un Mac utilizând Mac OS X, dar să se instaleze într-un mediu de producție Linux. Dacă doriți să vă asigurați că codul pe care îl dezvoltați pe Mac rulează corect pe Linux fără a fi necesar să îl implementați pe un server la distanță, puteți profita de folderele sincronizate în care citiți și scrieți fișiere pe sistemul de operare gazdă (de obicei Mac OS X) și le-au disponibil imediat pe OS oaspete (de obicei Linux). 

Aceasta scade pasul "implementare" din ciclul de editare-implementare-testare atunci când lucrați cu sisteme la distanță. De asemenea, elimină necesitatea unui mediu expansiv de staționare, care este o resursă partajată și care trebuie gestionat cu grijă în rândul tuturor dezvoltatorilor. Cu un VM local, nimeni nu va sparge mediul înconjurător și puteți experimenta cât doriți, fără să vă faceți griji cu privire la încălcarea codului altcuiva.

Puteți, desigur, utiliza ambele foldere sincronizate și încă SSH în VM. Există și alte opțiuni care pot bloca marginea, cum ar fi maparea porturilor.

Vagrantul

Iată o versiune dezmembrată a fișierului Vagrant cu câteva dintre cele mai importante opțiuni:

Vagrant.configure (2) nu | config | config.vm.box = "ubuntu / trusty64" config.vm.network "forwarded_port", vizitator: 80, gazdă: 8080 config.vm.network "private_network", ip: "192.168.33.33" config.vm.synced_folder "~ / vagrant_intro / data "," / vagrant_data "mașină.vm.hostname =" gigi.playground.local "

Sintaxa este Ruby, care vă oferă o mulțime de flexibilitate dacă doriți să adăugați condiționalități și bucle. Acest lucru este util în special dacă folosiți fișierul Vagrant pentru a gestiona un grup de mașini virtuale.

Conectarea la VM

Vă puteți conecta la modulul VM care rulează tastând: vagrant ssh.

Aceasta va lansa o sesiune SSH și vă va permite să jucați cu VM interactiv.

Bine ati venit pe Ubuntu 14.04.3 LTS (GNU / Linux 3.13.0-74-generic x86_64) * Documentație: https://help.ubuntu.com/ Informații despre sistem începând cu Mar 9 06:17:28 UTC 2016 Încărcarea sistemului: 0.97 Procese: 80 Utilizați /: 3.4% din 39.34GB Utilizatori conectați: 0 Utilizare memorie: 25% Adresă IP pentru eth0: 10.0.2.15 Schimb de utilizare: 0% Graficează aceste date și gestionează acest sistem la: https: .canonical.com / Obțineți asistență cloud cu Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 0 pachete pot fi actualizate. Actualizările sunt actualizări de securitate. 

Odată ce vă aflați în VM, puteți face tot ceea ce doriți: executați comenzi, creați utilizatori, creați fișiere și directoare, etc. Sunteți logat ca utilizator "vagrant", care are privilegii sudo, deci aveți control deplin asupra VM.

Schimbarea datelor cu VM

Vagrantul martorează automat folderul de pe aparatul gazdă care conține fișierul Vagrant în directorul / vagrant din interiorul mașinii de oaspeți. Aceasta vă permite să editați fișierele în editorul dvs. preferat pe mașina gazdă și să le puneți la dispoziția clienților sau, în mod alternativ, să le scrieți un fișier de ieșire în directorul / vagrant și să răsfoiți folderul sincronizat pe gazdă.

Maparea porturilor oaspeților

Adesea veți dori să rulați o aplicație care comunică printr-un port. Cea mai obișnuită este un server web. Vagrant vă permite să trimiteți porturile clienților la mașina gazdă. 

De exemplu, în configurația de mai sus, portul pentru oaspeți 80 este mapat la portul gazdă 8080. Ce inseamna asta este ca orice serviciu ruleaza pe portul 80 in clienti poate fi accesat ca localhost: 8080 pe masina gazda. 

Să vedem o demonstrație. Mai întâi, voi pune un simplu fișier index.html în directorul ~ / vagrant_intro din gazda care este sincronizat cu directorul / vagrant_data la invitat.

  

Vagabondul este minunat!

Apoi, după ce am SSH în mașina de oaspeți, voi rula un mic server web în directorul / vagrant_data:

vagrant @ vagrant-ubuntu-încredere-64: / vagrant $ sudo python3 -m http.server 80 Servirea HTTP pe portul 0.0.0.0 80 ... 

Acest server Python HTTP cu o singură linie servește pur și simplu orice fișier static din directorul său de lucru. Acum, deoarece portul 80 este mapat la portul 8080 al gazdei, puteți naviga la localhost: 8080 și puteți vizualiza rezultatul executării serverului.

Conectarea la VM prin rețea

De asemenea, vă puteți conecta la VM prin adresa sa IP ca și cum ar fi un server separat. Adăugez mereu un nume de gazdă în / etc / hosts, deci nu trebuie să utilizez adresa IP goală și deoarece codul pe care îl testez este de obicei configurat cu numele de gazdă al unui sistem de producție. Aceasta este ceea ce trebuie să adăugați în fișierul / etc / hosts:

# Sistem de producție important 192.168.33.33 production.server.com

Acum, orice acces la rețea la "production.server.com" de pe aparat va fi trimis la VM.

În acest caz, programele care se conectează de obicei la serverul de la distanță sunt configurate cu adresa IP sau numele de gazdă VM. Înainte de Vagrant 1.7, exista o singură cheie privată care ar putea fi folosită pentru toate mașinile. Aceasta a fost o problemă serioasă de securitate atunci când oamenii și-au expus mașina mașinii virtuale prin rețele publice și oricine ar putea accesa SSH și obține accesul rădăcină. Începând cu versiunea 1.7, Vagrantul generează o pereche nouă de chei pentru fiecare mașină. Pentru a afla unde este cheia privată a mașinii dvs., executați această comandă: vagrant ssh-config.

Iată cum puteți să faceți SSH direct către VM:

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

Gestionarea cutiilor virtuale

Vagrantul oferă mai multe comenzi pentru a gestiona casetele. Să explorăm. Pentru a vedea o listă de comenzi, tastați: vagabond.

Utilizare: vagrant [opțiuni]  [] -v, --versiune Imprimați versiunea și ieșiți. -h, --help Imprimați acest ajutor. Comenzi comune: casetele gestionează casetele: instalare, ștergere etc. conectați conectarea la un mediu vagrant partajat de la distanta distruge oprirea și șterge toate urmele stației de ieșire a stării globale a aparatului vagrant Mediile vagrante pentru acest oprire a utilizatorului oprește ajutorul vagrant al mașinii pentru un sub-comandă init inițializează un nou mediu Vagrant creând un jurnal de autentificare Vagrantfile în pachetele de pachete Atlas ale HashiCorp un mediu vagrant care rulează într-un plugin de boxe gestionează pluginurile: instalează, dezinstalează, actualizează etc. mediu la o destinație configurată rdp se conectează la mașină prin reîncărcare RDP repornește mașină vagrant, încarcă noua configurație Vagrantfile reia relua o mașină suspendată vagrant scp copiază datele într-o cutie prin SCP parts împărtășește mediul Vagrant cu oricine din lume ssh se conectează la mașină prin SSH ssh-config iesiri Configuratia valida OpenSSH pentru a se conecta la iesirile de stare ale masinii st atus al mașinii vagabond suspendă suspendarea mașinii de pornire și prevederi vagrant versiune de mediu imprimă versiunea curentă și cea mai recentă Vagrant Pentru ajutor pe orice comanda rulați "vagrant COMMAND -h" Subcomandă suplimentare sunt disponibile, dar sunt fie mai avansate sau nu sunt utilizate în mod obișnuit . Pentru a vedea toate subcomandele, rulați comanda "Vagrant list-commands". 

Am acoperit mai devreme unele dintre cele mai comune comenzi. cutie comenzile vă permit să gestionați direct casetele. De exemplu, pentru a vedea toate VM-urile de pe aparat, tastați lista cu cutii vagonale. Puteți actualiza casetele la cea mai recentă versiune cu Actualizați. reincarca comanda este foarte utilă dacă schimbați fișierul Vagrant. In cele din urma, dispoziţie vă permite să furnizați, să configurați și să instalați software pe VM folosind diverse furnizori, inclusiv Chef, Puppet, Salt, preferatul meu Ansible și chiar Docker.

Concluzie

Vagrant vă oferă un computer ușor de utilizat în computer. Puteți gestiona o flotă de VM-uri pentru diverse scopuri, iar Vagrantfile este interfața dvs. pentru a specifica modul în care VM ar trebui să se comporte. Distreaza-te sa explorezi Vagrantul. Tocmai am zgâriat suprafața.

Cod