1. Što to radi?
Jeste li se ikad pitali kako VPS pružatelji usluga konfiguriraju vaše VM-ove, dodaju vaše SSH-ključeve, stvaraju korisnike i instaliraju pakete svaki put kad zavrtite novi VM u 'oblaku'? Pa, odgovor za većinu dobavljača je cloud-init. Većina OS-a i distribucija isporučuju slike virtualnog diska s odgovarajućim OS-ima instaliranim na slici. Instalacija je vrlo minimalna i može poslužiti kao predložak za korijenski datotečni sustav OS-a. Održavači OS-a također su dovoljno ljubazni da pruže sliku virtualnog diska za sve razne formate, od sirovih slika diska do qcow2, pa čak i vmdk, vdi i vhd.
Slika također ima jedan dodatni paket koji je unaprijed instaliran, a to je cloud-init. Posao je cloud-init-a da inicijalizirati VM (obično unutar usluge hostinga u oblaku poput DigitalOcean, AWS ili Azure) razgovara s pružateljem usluge hostinga izvor podataka i dobiti podatke o konfiguraciji koje zatim koristi za konfiguriranje VM-a.
Podaci o konfiguraciji mogu sadržavati korisnički podaci poput SSH ključeva, naziva hosta instance, korisnika i lozinki, zajedno s bilo kojom drugom proizvoljnom naredbom koju korisnik želi pokrenuti.
2. Problem s Cloud-Init-om
Cloud-init je izvrstan alat ako ste korisnik oblaka, ako vrtite VM-ove ili spremnike, a vaš pružatelj usluga u oblaku ljubazan je da vas pita za konfiguraciju u oblaku, sjajno je! Pomoću datoteke za konfiguriranje u oblaku, koja se naziva i vaši korisnički podaci, možete dodavati korisnike, pokretati proizvoljne naredbe, instalirati pakete odmah dok se VM stvara. Postupak se može ponavljati iznova i iznova, a da se iznova i iznova ne unose zamorne naredbe. Uskoro imate flotu VM-ova, sve s identičnom konfiguracijom.
Međutim, ako malo dublje zakopate i vidite kako se pravi kobasica, počet ćete propitivati neke aspekte init-a u oblaku. Na primjer, prema zadanim postavkama izvor podataka je poput REST krajnje točke, a oni su u osnovi kodirani u sam paket cloud-init. Naravno, izvor podataka možete postaviti sami, ali postupak je nezgodan i dugotrajan. Dokumentacija za to sve samo ne postoji.
Službena dokumentacija nije ništa drugo nego korisnički priručnik za krajnje korisnike koji se oslanjaju na postojeće usluge u oblaku. Ne govori vam kako možete postaviti vlastiti izvor podataka u oblaku, u slučaju da ste nadolazeći dobavljač. Čak je i dokumentacija za krajnjeg korisnika loša, a ja bih preporučio ljude koji umjesto toga koriste izvrsne udžbenike DigitalOceana.
Da stvar bude gora, korisnicima labavih laboratorija za virtualizaciju i malim VPS pokretačima teško je iskoristiti te lagane slike u oblaku. Ne možete stvarno pokrenuti VM s tih predložaka bez izvora podataka koji se pokreće u oblaku ili nekog hakera koji je teško automatizirati i prilagoditi veličini. Drugim riječima, ne možete čak niti zanemariti iniciranje oblaka ako ne želite izraditi vlastite predloške.
Na klasičan sistemski način, oslobađa se svojih unaprijed definiranih uloga i počinje se petljati s umrežavanjem i ostalim dijelovima OS-a što odbija korisnike. Pakira se u Ubuntu 18.04 ISO poslužitelja što apsolutno nema smisla (barem ne meni).
3. Zaobilazno rješenje za kućne laboratorije
Ako uzmemo u obzir i dalje, još uvijek se moram nositi s cloud-init-om u svojoj svakodnevnoj upotrebi. Imam vrlo minimalnu instalaciju Debiana 9 na hardveru x86_64, koji koristim kao KVM hipervizor. Zaista sam želio koristiti slike qcow2 diska koje isporučuju Ubuntu i CentOS. U ove su slike diska unaprijed instaliran OS, a za njihovu upotrebu jednostavno trebate:
- Kopirajte ih kao virtualnu sliku tvrdog diska vašeg VM-a.
- Promijenite veličinu virtualne veličine korijenskog datotečnog sustava na željenu veličinu (preporučuje se najmanje 10 GB). To neće povećati fizičku veličinu vašeg VM-a, ali slika diska s vremenom može rasti jer mu VM dodaje više podataka.
- Konfigurirajte VM pomoću cloud-init-a. Najmanji zahtjev je postaviti lozinku root korisnika ili SSH ključeve, ali možete učiniti gotovo sve što je u mogućnosti cloud-init.
Slijede slijedeći koraci:
- Preuzmite sliku oblaka vašeg omiljenog OS-a i spremite je u direktorij / var / lib / libvirt / boot:
$ curl -O https: // cloud-images.ubuntu.com / xenial / current / xenial-server-cloudimg-
amd64-disk1.img
$ cd / var / lib / libvirt / images
- Stvorite prazan virtualni tvrdi disk željene veličine i u njega proširite preuzetu sliku qcow2. Volim pohranjivati VM tvrde diskove u direktorij / var / lib / libvirt / images /, možete odabrati drugi direktorij. Što god odabrali, pokrenite naredbe u nastavku u istom direktoriju:
virtualni disk veličine 8 GB
$ virt-resize --expand / dev / sda1 / var / lib / libvirt / boot / xenial-server-
cloudimg-amd64-disk1.img
./ myVM.qcow2
- Stvaranje datoteka u oblaku. Ovo su datoteke korisničkih podataka i metapodataka:
instance-id: myVM
naziv lokalnog hosta: myVM
$ vim korisnički podaci
# cloud-config
korisnici:
- naziv: korijen
chpasswd:
popis: |
korijen: myPassword
ističu: Lažno
Jedini korisnik kojeg ovdje imam je root korisnik. Ako ne spominjete nijednog korisnika, tada zadani korisnik s imenom ubuntu stvara se. Zadano korisničko ime razlikuje se od jednog do drugog OS-a, zbog čega preporučujem navođenje korisnika, čak i ako je pravedan korijen. Sljedeći dio datoteke s korisničkim podacima govori cloud-initu da konfigurira lozinku za sve korisnike kojima želite dodijeliti lozinku. Opet, upravo postavljam lozinku samo za root korisnika, i jest mojaPassword. Uvjerite se da nema razmaka između dvotočke i niza lozinke.
Još bolje, možete koristiti SSH-ključeve umjesto da imate okovane lozinke.
$ vim korisnički podaci# cloud-config
korisnici:
- naziv: korijen
ssh_pwauth: Istina
ssh_authorized_keys:
- ssh-rsa
- Ugradite datoteke korisničkih podataka i meta-podataka u iso.
Provjerite je li datoteka cidata-myVM.iso se nalazi u / var / lib / libvirt / images /
- Idite u direktorij / var / lib / libvirt / images i inicijalizirajte VM naredbom virt-install: $ virt-install --import --name myVM --memory 2048 --vcpus 2 --cpu host
--disk myVM.qcow2, format = qcow2, sabirnica = virtio --disk myVM-cidata.iso, uređaj = cdrom
--mrežni most = virbr0, model = virtio --os-type = linux
--os-varijanta = ubuntu16.04 --noautoconsoleSada se možete pokušati prijaviti na VM pomoću naredbe virsh console myVM i koristeći root korisničko ime i odgovarajuću lozinku za prijavu. Da biste izašli iz konzole, jednostavno upišite Ctrl +]
Zaključak
Slike u oblaku koje isporučuje većina dobavljača zaista su učinkovite u pogledu iskorištavanja resursa, a osjećaju se i vrlo brzo i brzo reagiraju. Činjenica da se kao početna točka moramo nositi s neugodnom konfiguracijom oblaka-init samo koči usvajanje KVM-a i srodnih tehnologija u zajednici.
Zajednica može puno naučiti iz načina na koji Docker gradi i isporučuje svoje slike. Njima je zaista lako upravljati i kao spremnike koji rade i kao predloške koji se lako distribuiraju i koriste.z