Cloud-init og VMS

Cloud-init og VMS
Følgende artikkel snakker litt om skyinnstilling og problemene den har, og hvordan åpen kildekode ikke nødvendigvis betyr frihet. Hvis du vil bruke skyinit for å konfigurere skybilder, bare bla ned til punkt nummer 3.

1. Hva det gjør?

Noen gang lurt på hvordan VPS-leverandører konfigurerer VM-ene dine, legger til SSH-nøkler, oppretter brukere og installerer pakker hver gang du spinner opp en ny VM i 'Cloud'? Vel, svaret for de fleste leverandører er sky-init. De fleste OS og distribusjoner sender virtuelle diskbilder med sine respektive operasjoner installert i bildet. Installasjonen er veldig minimal og kan tjene som en mal for rotfilsystemet til OS. OS -vedlikeholdere er også snille nok til å gi det virtuelle diskbildet for alle de forskjellige formatene fra rå diskbilder til QCOW2 og til og med VMDK, VDI og VHD.

Bildet har også en ekstra pakke forhåndsinstallert, og det er sky-init. Det er jobben som sky-init til Initialiser VM (typisk i en Cloud Hosting Service som Digitalocean, AWS eller Azure) snakker med vertsleverandørens datakilde og få konfigurasjonsinformasjonen som den deretter bruker for å konfigurere VM.

Konfigurasjonsinformasjonen kan inkludere brukerdata Som SSH -nøkler, vertsnavn for forekomsten, brukere og passord sammen med en hvilken som helst annen vilkårlig kommando som brukeren ønsker å kjøre.

Problemet med sky-init

Cloud-init er et flott verktøy hvis du er en skybruker, hvis du snurrer opp VM-er eller containere og skyleverandøren din er snill nok til å be deg om en sky-konfigurasjon, er det flott! Med en Cloud-Config-fil aka brukerdataen din kan du legge til brukere, kjøre vilkårlige kommandoer, installere pakker rett når VM opprettes. Prosessen kan gjentas om og om igjen uten at kjedelige kommandoer blir skrevet om og om igjen. Snart har du en flåte av VM -er, alle med identisk konfigurasjon.

Imidlertid, hvis du graver litt dypere og ser hvordan pølsen blir laget, vil du begynne å stille spørsmål ved noen av sky-inits aspekter. For eksempel, som standard, er DataSource som et endepunkt, og disse er i hovedsak hardkodet inn i selve sky-init-pakken. Visst. Dokumentasjonen for å gjøre dette er alt annet enn ikke-eksisterende.

Den offisielle dokumentasjonen er ikke annet enn en brukerhåndbok for sluttbrukere som er avhengige av eksisterende skytjenester. Det forteller deg ikke hvordan du kan konfigurere din egen sky-init DataSource, i tilfelle du er en kommende leverandør. Selv sluttbrukerdokumentasjonen er dårlig, og jeg vil anbefale folk som bruker Digitaloceans utmerkede opplæring i stedet.

For å gjøre vondt verre, synes brukere med virtualiseringslaboratorier og små VPS-oppstart det er vanskelig å dra nytte av de lette skybildene. Du kan egentlig ikke starte en VM av disse malene uten en sky-init DataSource eller noe hackery som er vanskelig å automatisere og skalere. Med andre ord, du kan ikke engang velge å ignorere skyinnstilling med mindre du vil lage dine egne maler.

På en klassisk systemd -måte er det å bryte seg fri fra sine forhåndsdefinerte roller, og det begynner å rote med nettverk og andre deler av operativsystemet som kaster brukere av. Det blir samlet i Ubuntu 18.04 Server ISO som absolutt ikke gir noen mening (i det minste ikke for meg).

Løsning for hjemmelaboratorier

All ranting til side, jeg må fremdeles takle skyinitt i min daglige bruk. Jeg har en veldig minimal Debian 9 -installasjon på x86_64 -maskinvare, som jeg bruker som KVM -hypervisor. Jeg ville virkelig bruke QCOW2 -diskbildene som sendes av Ubuntu og Centos. Disse diskbildene har OS forhåndsinstallert i seg, og for å bruke dem trenger du ganske enkelt:

  1. Kopier dem som VMs virtuelle harddiskbilde.
  2. Endre størrelsen på rotfilsystemets virtuelle størrelse til ønsket størrelse (minst 10 GB anbefales). Dette vil ikke øke den fysiske størrelsen på VM -en din, men diskbildet kan vokse over tid ettersom VM legger til mer data til det.
  3. Konfigurer VM-ene ved hjelp av skyinit. Det blotte minimumskravet er å angi root-brukerens passord eller SSH-nøkler, men du kan gjøre ganske alt som sky-init er i stand.

Følgende trinn følges:

  1. Last ned skybildet av ditt favoritt OS og lagre det i/var/lib/libvirt/boot -katalogen:
$ cd/var/lib/libvirt/boot
$ Curl -o https: // Cloud -images.Ubuntu.com/xenial/current/xenial-server-cloudimg-
AMD64-Disk1.img
$ CD/var/lib/libvirt/bilder
  1. Lag en tom virtuell harddisk av ønsket størrelse og utvid det nedlastede QCOW2 -bildet til det. Jeg liker å lagre VM -harddiskene på/var/lib/libvirt/bilder/katalog, du kan velge en annen katalog. Uansett hva du velger, kjør kommandoene nedenfor i samme katalog:
$ qemu -img create -f qcow2 myvm.QCOW2 8G ## Lag en harddisk med
Virtuell diskstørrelse på 8 GB
$ Virt-RE-Stize-Expand/dev/sda1/var/lib/libvirt/boot/xenial-server-
Cloudimg-AMD64-Disk1.img
./myVm.QCOW2
  1. Lag sky-init-filer. Dette er brukerdata- og metadatafiler:
$ vim metadata
Forekomst-ID: MyVM
Lokalt-hostnavn: MyVM

$ vim brukerdata
#Cloud-Config
Brukere:
- Navn: Root
Chpasswd:
Liste: |
ROOT: MyPassword
Utløper: Falske

Den eneste brukeren jeg har her er rotbrukeren. Hvis du ikke nevner noen bruker, så er standardbrukeren med navn Ubuntu blir opprettet. Standard brukernavn, skiller seg fra ett OS til et annet, og det er grunnen til at jeg anbefaler å spesifisere en bruker, selv om det bare er rot. Den neste delen av brukerdata-filen forteller sky-init å konfigurere passordet for alle brukerne du vil tilordne et passord. Igjen, jeg angir bare passordet for bare rotbruker, og det er det mitt passord. Forsikre deg om at det ikke er noen plass mellom tykktarmen og passordstrengen.

Bedre ennå, kan du bruke SSH-nøkler i stedet for å ha hardkodede passord som legger seg rundt.

$ vim brukerdata
#Cloud-Config
Brukere:
- Navn: Root
ssh_pwauth: true
ssh_autoriserte_keys:
- SSH-RSA
  1. Legg inn brukerdata- og metadata-filene i en ISO.
$ GenisoImage -output Cidata -Myvm.ISO -Volid Cidata -Joliet -Rock brukerdata metadata

Forsikre deg om at filen cidata-myvm.ISO ligger i/var/lib/libvirt/bilder/

  1. Gå til katalogen/var/lib/libvirt/bilder og initialiser VM med virt-install-kommando:
    $ virtinstall-Import-Navn MyVM-Memory 2048 --VCPUS 2-CPU-vert
    --disk myvm.QCOW2, Format = QCOW2, Bus = Virtio-Disk MyVM-Cidata.ISO, enhet = CDROM
    --Network Bridge = Virbr0, Model = Virtio --OS-Type = Linux
    --OS-Variant = Ubuntu16.04 -Noautoconsole

    Du kan nå prøve å logge deg på VM ved å bruke kommandoen Virsh -konsollen MyVM og bruke Root -brukernavnet og dets tilsvarende passord til innlogging. For å gå ut av konsollen, skriv ganske enkelt Ctrl+]

Konklusjon

Skybildene som de fleste leverandører sender er virkelig effektive når det gjelder ressursutnyttelse, og de føler seg også veldig raske og responsive. At vi trenger å håndtere den vanskelige cloud-init-konfigurasjonen som utgangspunkt, hindrer bare samfunnets adopsjon av KVM og relaterte teknologier.

Samfunnet kan lære mye av måten Docker bygger og sender sine bilder. De er veldig enkle å administrere både som å løpe containere og maler som er enkle å distribuere og bruke.z