Introductie van Vagrant

Overzicht

Met Vagrant kunt u eenvoudig meerdere virtuele machines beheren en besturen. Het is gebouwd bovenop VirtualBox en VMWare en biedt vele opwindende mogelijkheden. U kunt geïsoleerde ontwikkelomgevingen creëren, experimenteren met nieuwe producten en technologieën, nieuwe versies van bestaande pakketten installeren, uw eigen datacenter op uw laptop maken en verschillende besturingssystemen gebruiken. Dat alles is beschikbaar in een eenvoudig te beheren en volkomen veilige silo die uw hoofdactiviteiten en besturingssysteem niet kan verstoren. 

In deze tutorial laat ik zien hoe Vagrant kan worden opgezet en ontdek de vele mogelijkheden die het biedt.

Vagrant heeft onlangs ook ondersteuning toegevoegd voor Docker-containers, maar dat zal ik in deze tutorial niet bespreken.

Installatie

  1. Download de gratis VirtualBox voor uw besturingssysteem vanaf de VirtualBox-website.
  2. Na het downloaden voert u gewoon het binaire bestand uit en installeert u het.
  3. Vagrant downloaden.
  4. Nogmaals, voer gewoon het binaire bestand uit om het te installeren.

Vagrant initialiseren

Vagrant is een op de commandoregel gebaseerd hulpmiddel. Zodra de installatie is voltooid, opent u een consolevenster en maakt u een nieuwe map met de naam 'vagrant_intro'.

cd ~ mkdir vagrant_intro cd vagrant_intro

Dit zal vanaf nu uw werkdirectory zijn. Typ in de map vagrant_intro:

vagrant init ubuntu / trusty64

Je zou de volgende tekst moeten zien:

Een 'Vagrantfile' is in deze map geplaatst. U bent nu klaar om uw eerste virtuele omgeving te 'vagreren'! Lees de opmerkingen in de Vagrantfile en de documentatie over 'vagrantup.com' voor meer informatie over het gebruik van Vagrant. 

Het gegenereerde 'Vagrantfile' is een Ruby-bestand dat uw [een of meer] virtuele machines bestuurt. Het is een behoorlijk groot bestand met veel opties met commentaar. Ik zal later de belangrijke bespreken, maar laten we het eerst proberen. Type: zwervend op.

Dit zorgt ervoor dat Vagrant een voorbereide virtuele doos downloadt met de 64-bits Ubuntu 14.04 (vertrouwde) release. Het duurt een tijdje (enkele minuten) en spuug veel tekst op je scherm. Terwijl Vagrant aan het karnen is, laten we het in praktische termen eens zijn over wat een VM is.

Eén weergave (die ik meestal gebruik) is dat de VM een externe server simuleert. U moet alleen communiceren via de netwerkinterface. Dit is met name handig voor het testen van gedistribueerde systemen waarbij u geen gebruik hoeft te maken van speciale VM-host-interfaces, omdat deze niet beschikbaar zijn op uw productiesystemen. Wanneer u in deze modus werkt, communiceert u normaal gesproken met uw VM over SSH (mogelijk met een tool zoals Ansible).

Een andere weergave, die ook volledig correct en geldig is, is om de VM te beschouwen als een ander besturingssysteem dat op uw lokale computer draait. Deze weergave is handig als u zich rechtstreeks wilt ontwikkelen op uw doel-OS. 

Een heel gebruikelijke setup is bijvoorbeeld om ontwikkelaars hun code te laten schrijven op een Mac met Mac OS X, maar te implementeren in een Linux-productieomgeving. Als u ervoor wilt zorgen dat de code die u op de Mac ontwikkelt, correct wordt uitgevoerd op Linux zonder te moeten worden geïmplementeerd op een externe server, kunt u profiteren van gesynchroniseerde mappen waarin u bestanden leest en schrijft op het host-besturingssysteem (meestal Mac OS X) en ze onmiddellijk beschikbaar te hebben op het gast-besturingssysteem (meestal Linux). 

Hiermee wordt de stap "deploy" uit de cyclus edit-deploy-test onderbroken bij het werken met externe systemen. Het maakt ook de noodzaak overbodig voor een uitgebreide staging-omgeving die een gedeelde bron is en zorgvuldig moet worden beheerd door alle ontwikkelaars. Met een lokale VM gaat niemand je omgeving doorbreken en kun je zo veel experimenteren als je wilt zonder je zorgen te maken over het breken van de code van iemand anders.

U kunt natuurlijk zowel gesynchroniseerde mappen als nog steeds SSH gebruiken in uw VM. Er zijn andere opties die de grenzen vervagen, zoals poorttoewijzing.

The Vagrantfile

Hier is een uitgeklede versie van het Vagrant-bestand met enkele van de belangrijkste opties:

Vagrant.configure (2) do | config | config.vm.box = "ubuntu / trusty64" config.vm.network "forwarded_port", gast: 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 "

De syntaxis is Ruby, wat u veel flexibiliteit geeft als u conditionals en loops wilt toevoegen. Dit is vooral handig als u uw Vagrantfile gebruikt om een ​​cluster van virtuele machines te beheren.

Verbinding maken met uw VM

U kunt verbinding maken met uw draaiende VM door te typen: zwervende ssh.

Hiermee start u een SSH-sessie en kunt u interactief met uw VM spelen.

Welkom bij Ubuntu 14.04.3 LTS (GNU / Linux 3.13.0-74-generic x86_64) * Documentatie: https://help.ubuntu.com/ Systeeminformatie vanaf Tue Feb 9 06:17:28 UTC 2016 Systeem laden: 0.97 Processen: 80 Gebruik van /: 3.4% van 39.34GB Gebruikers ingelogd: 0 Geheugengebruik: 25% IP-adres voor eth0: 10.0.2.15 Ruilgebruik: 0% Geef een grafiek van deze gegevens en beheer dit systeem op: https: // landschap .canonical.com / Krijg cloud-ondersteuning met Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 0 pakketten kunnen worden bijgewerkt. 0 updates zijn beveiligingsupdates. 

Eenmaal in je VM kun je vrijwel alles doen wat je wilt: opdrachten uitvoeren, gebruikers maken, bestanden en mappen maken, enz. Je bent ingelogd als de 'vagrant'-gebruiker, die sudo-privileges heeft, dus je hebt volledige controle over de VM.

Gegevens uitwisselen met uw VM

Vagrant wijst de map op de hostcomputer die het Vagrant-bestand bevat automatisch toe aan de / vagrant-directory binnen de gastmachine. Hiermee kunt u bestanden in uw favoriete editor op de hostcomputer bewerken en deze in de gast beschikbaar stellen of de gast een uitvoerbestand laten schrijven naar de map / vagrant en bladeren in de gesynchroniseerde map op de host.

Gastpoorten in kaart brengen

Vaak wilt u een toepassing uitvoeren die via een poort communiceert. De meest voorkomende is een webserver. Met Vagrant kunt u gastpoorten doorsturen naar de hostcomputer. 

In de bovenstaande configuratie is bijvoorbeeld de gastpoort 80 toegewezen aan de poort van de host 8080. Wat dat betekent is dat welke service dan ook op poort 80 in de gast draait, kan worden benaderd als localhost: 8080 op de hostcomputer. 

Laten we een demonstratie zien. Eerst plaats ik een eenvoudig index.html-bestand in de directory ~ / vagrant_intro op de host die is gesynchroniseerd met de map / vagrant_data op de gast.

  

Vagrant is geweldig!

Daarna, nadat ik SSH in de gastmachine heb gezet, zal ik een kleine webserver draaien in de / vagrant_data map:

vagrant @ vagrant-ubuntu-trusty-64: / vagrant $ sudo python3 -m http.server 80 Presenteren HTTP op 0.0.0.0 poort 80 ... 

Deze one-liner Python HTTP-server dient eenvoudig elk statisch bestand in zijn werkdirectory. Nu, omdat poort 80 is toegewezen aan de 8080-poort van de host, kunt u bladeren naar localhost: 8080 en het resultaat bekijken van het uitvoeren van de server.

Verbinding maken met de VM via het netwerk

U kunt ook via zijn IP-adres verbinding maken met de VM alsof het een echt aparte server is. Ik voeg altijd een hostnaam toe aan / etc / hosts, dus ik hoef niet het blote IP-adres te gebruiken en omdat de code die ik aan het testen ben, meestal is geconfigureerd met de hostnaam van een productiesysteem. Dit is wat je moet toevoegen aan je bestand / etc / hosts:

# Belangrijk productiesysteem 192.168.33.33 production.server.com

Nu wordt elke netwerktoegang naar "production.server.com" op uw machine naar uw VM verzonden.

In dit geval worden de programma's die gewoonlijk verbinding maken met de externe server geconfigureerd met het VM IP-adres of de hostnaam. Voorafgaand aan Vagrant 1.7 was er één privésleutel die voor alle machines kon worden gebruikt. Dit was een serieus beveiligingsprobleem wanneer mensen hun virtuele machine openbaar maakten via openbare netwerken en iedereen SSH kon binnendringen en root-toegang kreeg. Vanaf versie 1.7 genereert Vagrant een nieuw sleutelpaar voor elke machine. Voer de volgende opdracht uit om te achterhalen waar de persoonlijke sleutel voor uw computer staat: vagrant ssh-config.

Hier is hoe u SSH rechtstreeks naar de VM kunt sturen:

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

Uw virtuele kisten beheren

Vagrant biedt veel opdrachten om dozen te beheren. Laten we onderzoeken. Typ om een ​​lijst met opdrachten te bekijken: zwerver.

Gebruik: vagrant [opties]  [] -v, --versie Druk de versie af en sluit af. -h, --help Druk deze hulp af. Gemeenschappelijke commando's: box beheert boxen: installatie, verwijdering, etc. connect connect to a remote shared Vagrant environment destroy stops and delete alle sporen van de vagrant machine global-status outputs status Vagrant environments voor deze gebruiker halt stopt de vagrant machine help toont de hulp voor een subcommand init initialiseert een nieuwe Vagrant-omgeving door een aanmeldingslogin voor Vagrantfile te maken in HashiCorp's Atlas-pakketpakketten een lopende zwervende omgeving in een box-plug-in beheert plug-ins: installeren, de-installeren, updaten, enz. provisievoorraden die de dwaalmachinedrukcode in deze code implementeert omgeving naar een geconfigureerde bestemming rdp verbindt met machine via RDP reload herstart vagrant-machine, laadt nieuwe Vagrantfile-configuratie hervatten hervat een opgeschorte vagrant-machine scp kopieert data in een box via SCP share deel jouw Vagrant-omgeving met iedereen ter wereld ssh verbindt met machine via SSH ssh-config uitgangen OpenSSH geldige configuratie om verbinding te maken met de machinestatus uitgangen st atus van de zwervende machine opschorten stopt de machine begint en biedt voorzieningen de zwervende omgevingsversie drukt huidige en nieuwste Vagrant-versie Voor hulp bij elke individuele opdracht uitvoeren 'zwervend COMMAND -h' Extra subopdrachten zijn beschikbaar, maar zijn meer geavanceerd of niet vaak gebruikt . Om alle subopdrachten te zien, voert u de opdracht 'landloperslijstopdrachten' uit. 

Ik heb eerder enkele van de meest gebruikte commando's behandeld. De doos Met opdrachten kunt u uw vakjes rechtstreeks beheren. Als u bijvoorbeeld alle VM's op uw computer wilt zien, typt u landloperskistlijst. U kunt dozen bijwerken naar de nieuwste versie met bijwerken. De herladen commando is erg handig als je je Vagrantfile wijzigt. Tenslotte, voorziening kunt u software op uw VM installeren, configureren en installeren met verschillende voorzieningen, waaronder Chef, Puppet, Salt, mijn favoriete Ansible en zelfs Docker.

Conclusie

Vagrant biedt u een eenvoudig te gebruiken computer op de computer. U kunt een groot aantal VM's beheren voor verschillende doeleinden, en de Vagrantfile is uw interface voor het specificeren hoe de VM zich zou moeten gedragen. Veel plezier met het verkennen van Vagrant. Ik heb hier net de oppervlakte geschraapt.