Permalänk
Medlem

Vad är Vagrant?

Jag tycker denna forumdelen inte riktigt uppnår sin potential, och tänkte göra mitt för att åtgärda detta genom att prata lite om ett häftigt verktyg jag använder både i jobbet och privat. Om detta leder till någon kul diskussion så kanske detta kan bli till något återkommande, att man beskriver användningsområden för användbara Linux-prylar.

Vagrant är ett verktyg för att hantera virtuella maskiner. Det är extremt smidigt för att snabbt få igång en liten (eller stor) labbmiljö man kan meka med. Om man skulle göra något dumt går det lika snabbt att skrota allt och börja på ny kula.

Hur använder man då vagrant? Jo, det första man behöver göra är att installera det, detta görs med fördel med valfri pakethanterare. Men jag tror många här kör Ubuntu eller någon annan debian-baserad dist så det kommandot kommer här:

sudo apt-get install vagrant

Sedan behöver man en VM-leverantör, detta kan vara t.ex. VM-ware, Virtualbox eller till och med docker, som vagrant ska använda sig av. Eftersom VirtualBox är väldigt vanligt att man använder till detta och jag tror VM-ware kostar pengar så kommer jag i detta exemplet använda mig av VirtualBox, så vi installerar det också:

sudo apt-get install vagrant sudo apt-get install virtualbox-dkms

Nu när allt är installerat är det dags att sätta upp en virtuell maskin.

mkdir vagrant-projekt # Vi börjar med att skapa upp en mapp för vårt lilla projekt cd vagrant-projekt # Sedan går vi in i mappen vagrant init bento/ubuntu-16.04 # Vi initierar en maskin med Ubuntu 16.04 vagrant up # Vi sätter igång maskinen

Då var det klart! Nu kommer vagrant hämta ner snurra igång en maskin med Ubuntu 16.04. Du kan nu logga in på maskinen genom att köra kommandot:

vagrant ssh # Detta ansluter med ssh till den virtuella maskinen du

(vill du lämna den virtuella maskinen så kan det göras med CTRL+d eller kommandot exit, precis som vilken ssh-session som helst)
Vi gör en liten djupdykning i vad som faktiskt hände i initieringssteget. Det skapades en fil i din mapp som heter Vagrantfile. Denna fil beskriver hur maskinen ska konfigureras.

Vagrantfile
I denna fil så hamnar t.ex. vilket typ av "box" (ord för typ "förpackad maskin", i detta fallet Bentos Ubuntu 16.04 box) det ska vara. Anledningen till att vi valde just denna box är att Ubuntu 16.04 är i skrivande stund senaste LTS releasen av Ubuntu och att Hashicorp (de som gör Vagrant) brukar rekommendera Bentos opensourceboxar.

Om vi öppnar Vagrantfile i valfri text-editor så finns det många utkommenterade konfigurationsrader. Dessa beskriver bl.a. hur man delar en mapp från sin lokala maskin med den virtuella:

config.vm.synced_folder "../data", "/vagrant_data"

Detta skulle alltså dela mappen data, som ligger en nivå upp, med den virtuella maskinen som skulle se den som /vagrant_data. Detta kan vara bra i många situationer, men t.ex. när man vill ta ut en konfigurationsfil ur den virtuella maskinen så kan man lägga den i /vagrant_data så kan du hitta den i data-mappen på din lokala maskin.

Det finns mängder med olika inställningar man kan göra i Vagrantfile, och jag kommer verkligen inte gå igenom alla, men en häftig grej vi snabbt kan beröra är hur man sätter upp flera virtuella maskiner i samma fil:
Denna kod ska vara mellan Vagrant.configure("2") do |config|
och end

config.vm.define :vm1 do |vm1| # Här skulle vi kunna köra maskinspecifika kommandon om vi vill end config.vm.define :vm2 do |vm2| # Här skulle vi kunna köra maskinspecifika kommandon om vi vill end

Ovan sätter vi upp vm1 och vm2, men eftersom Vagrantfile är skriven i Ruby kan vi också göra flera maskiner med en loop:

(1..3).each do |i| config.vm.define "vm-#{i}" do |vm| # Här skulle vi kunna köra maskinspecifika kommandon om vi vill end end

När man har flera maskiner kan man t.ex. skapa ett privat nätverk mellan dem, testa att hosta olika tjänster på dem och testa system som kommunicerar med varann. Man ansluter till en specifik maskin med

vagrant ssh maskinens namn

Stänga av och förstöra de virtuella maskinerna
När man lekt färdigt och inte vill att de virtuella maskinerna ska hålla på och ta kraft så kan man stänga ner dem med

vagrant halt

Vill man helt börja om på nytt och ta bort den virtuella maskinen (notera att Vagrantfile finns kvar) så kör man

vagrant destroy

eller om maskinen körs:

vagrant destroy -f

Användningsområden
Vad har jag använt detta till då? Jo, det är ett så smidigt sätt att sätta upp en testmiljö på så jag använder det i princip till alla projekt jag har. Nu senast skulle jag sätta upp min media-server och då gjorde jag ett ansible-script som deployar ut alla de olika tjänsterna och istället för att testa på min körande server så riktade jag scriptet mot en virtuell maskin. På så sätt kunde jag enkelt se till att allting fungerade på en gång på en helt ren maskin och behövde inte hålla på och få massa "skräp" i den verkliga miljön. Man behöver inte återställa något manuellt till ursprungstillståndet utan man kan bara köra en vagrant destroy följt av en vagrant up så är allt som nytt igen.

Permalänk
Medlem

Detta kanske blev en lite för basic nivå, men jag visste inte riktigt vilken nivå som skulle uppskattas. Om intresse finns kan vi ju gå in lite mer på djupet i vagrant eller något annat kul.

Permalänk
Inaktiv

Nu är jag inte Linux-användare i dagsläget men gillar att hantera virtuella maskiner och det låter som ett intressant verktyg som nog måste provas när jag får möjlighet.

Jag hade gärna sett något sådant för Windows med och då specifikt snabbt få igång en virtualiserad Windows-miljö.

Permalänk
Medlem
Skrivet av anon5930:

Nu är jag inte Linux-användare i dagsläget men gillar att hantera virtuella maskiner och det låter som ett intressant verktyg som nog måste provas när jag får möjlighet.

Jag hade gärna sett något sådant för Windows med och då specifikt snabbt få igång en virtualiserad Windows-miljö.

Teoretiskt möjligt på Win10, Kör du 'Bash on Ubuntu on Win10', windows inbyggda ubuntu terminal, så finns vagrant att ladda ner från vanliga repot. Om du har virtualbox på din win10 dator antar jag att du kan använda vagrant för att styra. Även virtualbox finns som paket i vanliga repot, så.. :=)

https://minfil.org/d99dZcb8be/win10.png

Visa signatur

Ryzen 5800x @ 32gb 3200mhz @ 7tb ssd @ 3060ti Fractal r5 @ Arch
i5 4670k @ 24gb 1600mhz @ Fractal r3 @ 12tb ZFS @ Truenas Scale
Thinkpad T450 @ i5 5300u @ 16gb @ 512gb ssd @ 24+48wh batteri @ Debian

Permalänk

Kör själv Vagrant i Windows 10 genom att tanka ner det från download-sidan, precis som ovan tipsade om.
Funkar prima!