Cloud Init

Cloud-Init i VM-ovi

Cloud-Init i VM-ovi
Sljedeći članak govori malo o cloud-init-u i problemima koje on ima te kako otvoreni izvor ne mora nužno značiti slobodu. Ako želite koristiti cloud-init za konfiguriranje slika u oblaku, samo se pomaknite prema dolje do točke 3.

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:

  1. Kopirajte ih kao virtualnu sliku tvrdog diska vašeg VM-a.
  2. 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.
  3. 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:

  1. Preuzmite sliku oblaka vašeg omiljenog OS-a i spremite je u direktorij / var / lib / libvirt / boot:
$ cd / var / lib / libvirt / boot
$ curl -O https: // cloud-images.ubuntu.com / xenial / current / xenial-server-cloudimg-
amd64-disk1.img
$ cd / var / lib / libvirt / images
  1. 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:
$ qemu-img create -f qcow2 myVM.qcow2 8G ## Stvorite tvrdi disk pomoću
virtualni disk veličine 8 GB
$ virt-resize --expand / dev / sda1 / var / lib / libvirt / boot / xenial-server-
cloudimg-amd64-disk1.img
./ myVM.qcow2
  1. Stvaranje datoteka u oblaku. Ovo su datoteke korisničkih podataka i metapodataka:
$ vim meta-podaci
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
  1. Ugradite datoteke korisničkih podataka i meta-podataka u iso.
$ genisoimage -izlaz cidata-myVM.iso -volid cidata -joliet -rock user-data meta-podaci

Provjerite je li datoteka cidata-myVM.iso se nalazi u / var / lib / libvirt / images /

  1. 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 --noautoconsole

    Sada 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

Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...