A korábbi cikkemben röviden bemutattam a Vagrantot, létrehoztuk az első virtuális gépünket. Most megnézzük, milyen további lehetőségeink vannak. Már csak azért is, mert alapesetben 512 MB memóriával és 1 VCPU-val indul a VM, ami nem sok mindenre elég. Nyissuk meg a kedvenc szövegszerkesztőnkkel a Vagrantfile-t. A könnyebb átláthatóság miatt töröljünk ki mindent, a 77 sorból csak 3 hasznos, a többi komment. Adjuk hozzá a memória és a cpu paramétereket:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end
Mivel legutóbb töröltem a VM-et, most újra hozzuk létre és lépjünk is bele:
$ vagrant up
$ vagrant ssh
Ellenőrizzük a memóriát és a cpu-t:
[vagrant@localhost ~]$ grep CPU /proc/cpuinfo
model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz
model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz
[vagrant@localhost ~]$ free -h
total used free shared buff/cache available
Mem: 990M 87M 811M 6.6M 91M 784M
Swap: 2.0G 0B 2.0G
Ahogy várható volt, megduplázódott a memória és a cpu. Állítsuk le a gépet ($ sudo poweroff
), majd bővítsük a Vagrantfile-t:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
config.vm.provision "shell", inline: <<-SHELL
yum install mc epel-release httpd net-tools -y
yum update -y --skip-broken
systemctl enable --now httpd
SHELL
end
Ha most kiadjuk a „$ vagrant up
” parancsot, nem fog történni semmi, ugyanis a Vagrantfile-ban definiált paraméterek egy részét csak első indításkor olvassa be. Ebben a példában ilyen a két „SHELL” közé rakott három parancs. Az első feltelepíti a midnight commandert, az apache webszervert, a net-tools-t, és az epel-repót, illetve ezek függőségeit. A második frissíti a VM-et. A harmadik pedig engedélyezi a webszerver auto startját, sőt azonnal el is indítja. Tehát a teszteléséhez ismét töröljük a gépet, és hozzuk létre újra:
$ vagrant destroy -f
$ vagrant up
$ vagrant ssh
A szokásos szöveget fogjuk látni a konzolunkban, majd elindul a telepítés és a frissítés, ezek már zöld és piros színekben fognak pompázni, a cikk írásakor nálam 141 csomagot frissített.
Ellenőrizzük a webszervert:
# netstat -antp | grep LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 355/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4090/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 919/master
tcp6 0 0 :::111 :::* LISTEN 355/rpcbind
tcp6 0 0 :::80 :::* LISTEN 13281/httpd
tcp6 0 0 :::22 :::* LISTEN 4090/sshd
tcp6 0 0 ::1:25 :::* LISTEN 919/master
Láthatóan figyel a 80-as porton a httpd. Igen ám, de ezt a laptopról nem érjük el, ugye emlékszünk, NAT-olt hálózata van a VM-nek, ő kilát a netre, de senki nem lát be hozzá. Kapcsoljuk le a VM-et ($ sudo poweroff
), és bővítsük a Vagrantfile-t:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
config.vm.provision "shell", inline: <<-SHELL
yum install mc epel-release httpd net-tools -y
yum update -y --skip-broken
systemctl enable --now httpd
SHELL
end
Most már elérjük a virtuális szerverünk webszerverét a laptopunk 8080-as portján. Figyelem! Ha más már használja a portot, akkor a VM indításakor erre figyelmeztetést fogunk kapni!
Másképp is meg lehet oldani a hozzáférést, adjunk egy másik hálókártyát a VM-nek, és akkor nem kell aggódni a port ütközések miatt. Vegyük elő a Vagrantfile-t, kommentezzük ki a port-forwardot, és adjunk hozzá egy új hálókártyát:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
#config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
config.vm.network "private_network", ip: "192.168.56.2"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
config.vm.provision "shell", inline: <<-SHELL
yum install mc epel-release httpd net-tools -y
yum update -y --skip-broken
systemctl enable --now httpd
SHELL
end
Indítsuk újra a VM-et:
$ vagrant reload
Ha frissítjük a böngészőnket, már nem fog bejönni a weboldal (töröltük a port-forwardot). De a VM dedikált IP címén elérhetjük, már nem kell porttal trükközni:
Ennyit szerettem volna mondani, a következő cikkben arról fogok mesélni, hogyan kell több VM-et indítani.