Ebben a cikkben megpróbálom leírni, hogy hogyan építek a laptopomon egy komplett labor környezetet.
Miért van szükségem egyáltalán labor környezetre?
- nem akarom teleszemetelni az elsődleges operációs rendszeremet (jelenleg Fedora Linux 38)
- a tesztelendő alkalmazást másik operációs rendszeren akarom kipróbálni (például olyanon, ami a prod szerveren fut)
- az is lehet, hogy a saját ansible playbookom több operációs rendszerrel is kompatibilissé szeretném tenni
- stb.
Mi az a Vagrant?
A weboldaluk szerint:
A Vagrant egy eszköz a virtuális gép környezetek egyetlen munkafolyamatban történő létrehozására és kezelésére. A könnyen használható munkafolyamattal és az automatizálásra összpontosítva a Vagrant csökkenti a fejlesztői környezet beállítási idejét…
https://developer.hashicorp.com/vagrant/intro
Több virtualizációs technológiát is támogat, én szinte kizárólag Virtualbox alatt használom (a virtualbox telepítése nem része ennek a cikknek, viszont a vagrant használatához kell, így csak úgy fogj neki, ha már működik a gépeden).
Kezdjük el az ismerkedést
Első lépés, töltsük le és telepítsük az operációs rendszerünkre a vagrantot. Praktikus repóból telepíteni, így a frissítéseket is megkapjuk. Fedora Linuxon így kell csinálni:
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
sudo dnf -y install vagrant
Vegyük elő a kedvenc terminál emulátorunkat, és hozzunk létre egy mappát, mondjuk vagrant néven, majd lépjünk is bele:
$ mkdir vagrant
$ cd vagrant
Ellenőrizzük le a verziót (a cikk írásakor 2.3.7):
$ vagrant -v
Még nem említettem, a vagrant mindent a „Vagrantfile” nevű fájlba tesz, előbb ezt létre kell hozni, kezdésnek egy CentOS 7 Linuxot szeretnénk:
$ vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Mit tartalmaz a létrehozott Vagrantfile? Ha eltávolítjuk a kommenteket, ez a minimál konfig marad, ami elég a CentOS 7 futtatásához:
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end
Indítsunk el egy CentOS 7-es virtuális gépet a vagranttal (első indításkor letölti a választott OS imidzset, nálam ez már korábban megtörtént):
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/7' version '2004.01' is up to date...
==> default: Setting the name of the VM: demo_default_1687813267367_10213
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
default: in which case you may ignore this message.
==> default: Rsyncing folder: /home/msandor/vagrant/demo/ => /vagrant
El is készült az első virtuális szerverünk, fut is, ellenőrizzük le:
$ vagrant status
Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
Azt írja, hogy fut, méghozzá virtualbox alatt, illetve mutat pár lehetőséget. Lépjünk be a virtuális szerverünkre. Erre két lehetőségünk is van, a bonyolultabb módszer:
$ ssh -p 2222 -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1
És a sokkal egyszerűbb módszer:
$ vagrant ssh
Fontos tudnivalók!
A vagrant fejlesztői/teszt környezetre lett kitalálva, ezért bevezettek néhány biztonságot gyengítő lépést, hogy nekünk könnyebb legyen az életünk. Például nem kér jelszót belépéskor, nem kér jelszót sudo-záskor. A virtuális gép (továbbiakban: VM) nem érhető el a belső hálózatodról, de még az őt futtató gépedről sem, mivel NAT-olt hálózatot kapott.
Még pár lehetőség
VM törlése:
$ vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...
Ha módosítottunk a Vagranfile-on, akkor indítsuk újra a VM-et:
$ vagrant reload
És a végére is értünk a vagrant alapoknak. A következő cikkemben bemutatom, hogyan futhat több, akár különböző VM egyszerre, hogyan állítsuk be az erőforrásokat (memória, cpu, hálózat), hogyan kell frissíteni az imidzseket, stb.
Szia!
Ez egy szuper leírás!