Virtualizácia

Virtualizácia sa využíva v rôznych prostrediach a situáciách. Ak sme vývojári, virtualizácia nám poskytne prostredie, kde môžeme bezpečne vykonávať takmer akékoľvek pokusy bez toho, aby sme narušili svoje hlavné pracovné prostredie. Ak sme správcovia systému, môžeme virtualizáciu využiť na oddelenie služieb a na požiadanie ich presúvať.

Predvolenou virtualizačnou technológiou, ktorú Ubuntu podporuje, je KVM, čo je technológia, ktorá využíva virtualizačné funkcie vstavané do procesorov Intel a AMD. Ak nemáme hardvér s podporou virtualizácie, môžeme využiť riešenia ako Xen a Qemu.

libvirt

Knižnica libvirt sa používa ako rozhranie pre rôzne virtualizačné technológie. Pred tým, ako začneme používať libvirt, je dobré uistiť sa, či máme hardvérovú podporu potrebnú pre KVM. V príkazovom riadku zadáme nasledujúci príkaz:

kvm-ok

Zobrazí sa správa, ktorá hovorí, či náš procesor hardvérovo podporuje alebo nepodporuje virtualizáciu.

[Note]

Na väčšine počítačov, ktorých procesor podporuje virtualizáciu, je nevyhnutné aktivovať túto podporu v systéme BIOS. Metóda použitá vyššie nezobrazí, či sa dá podpora aktivovať.

Virtuálna sieť

Existuje niekoľko spôsobov, ako umožniť virtuálnemu počítaču prístup k externej sieti. Predvolená konfigurácia virtuálnej siete je v tzv. používateľskom režime - usermode, ktorý používa protokol SLIRP a komunikáciu smeruje prekladom adries NAT cez sieťové rozhranie hosťovského systému do vonkajšej siete.

Ak chceme ostatným počítačom v sieti umožniť priamy prístup k službám virtuálnych počítačov, je potrebne nakonfigurovať premostenie - bridge. To umožní virtuálnemu sieťovému rozhraniu pripojiť sa k vonkajšej sieti priamo cez fyzické sieťové rozhranie, vďaka čomu bude virtuálny počítač pre ostatné počítače viditeľný ako bežná stanica. Viac informácií o nastavovaní premostenia sa nachádza v časti “Premostenie”.

Inštalácia

Ak chceme nainštalovať potrebné balíčky, v príkazovom riadku zadáme:

sudo apt-get install kvm libvirt-bin

Po nainštalovaní libvirt-bin, je potrebné pridať aspoň jedného používateľa do skupiny libvirtd. Používatelia v tejto skupine môžu spravovať virtuálne počítače. Títo používatelia budú mať tiež právo meniť pokročilé sieťové nastavenia.

V príkazovom riadku zadáme:

sudo adduser $USER libvirtd
[Note]

Ak bol zvolený aktuálny používateľ, pod ktorým ste práve prihlásený, je potrebné sa odhlásiť a znovu prihlásiť, aby sa zmena prejavila.

Teraz môžeme začať inštalovať hosťujúci operačný systém. Inštalácia systému na virtuálny počítač sa ničím nelíši od inštalácie na fyzický počítač. Buď treba nájsť spôsob, ako inštaláciu zautomatizovať alebo je potrebné pripojiť k fyzickému počítaču monitor a klávesnicu.

V prípade virtuálnych počítačov s grafickým rozhraním (GUI) je použitie klávesnice a myši rovnaké. Miesto inštalovania grafického systému však môžeme použiť aj aplikáciu virt-viewer, pomocou ktorej sa môžeme pripojiť na vzdialený virtuálny počítač cez VNC. Viac informácií sa nachádza v časti “Prehliadač virtuálnych počítačov”.

Existuje niekoľko spôsobov ako automatizovať inštaláciu Ubuntu, napríklad je možné použiť metódy preseeds, kickstart, atď. Viac informácií sa nachádza v inštalačnej príručke Ubuntu.

Iný spôsob, ako nainštalovať virtuálny počítač s Ubuntu, je použitie nástroja ubuntu-vm-builder. Nástroj ubuntu-vm-builder umožňuje použiť rozšírené možnosti pri nastavovaní oddielov disku, spustiť programy cez tzv. poinštalačný skript, atď. Viac informácií sa nachádza v časti JeOS a vmbuilder.

virt-install

Nástroj virt-install je časťou balíka python-virtinst. Ak ho chcete nainštalovať, zadajte nasledujúci príkaz:

sudo apt-get install python-virtinst

Spolu s príkazom virt-install je možné použiť aj niekoľko parametrov. Napríklad:

sudo virt-install -n web_vyvoj -r 256 -f web_vyvoj.img \
-s 4 -c jeos.iso --accelerate \
--connect=qemu:///system --vnc \
--noautoconsole -v
  • -n web_vyvoj: meno virtuálneho počítača v tomto príklade bude web_vyvoj .

  • -r 256: určuje veľkosť pamäte, ktorú bude virtuálny počítač používať.

  • -f web_vyvoj.img: určuje cestu k virtuálnemu disku, ktorý môže byť súbor, diskový oddiel alebo logický zväzok. V tomto príklade sme použili súbor s názvom web_vyvoj.img.

  • -s 4: určuje veľkosť virtuálneho disku.

  • -c jeos.iso: súbor, ktorý sa použije ako virtuálny CDROM. Súbor môže byť buď ISO súbor alebo cesta k pripojenému fyzickému CDROMu.

  • --accelerate: zapne v jadre technológiu na urýchlenie virtualizácie.

  • --vnc: exportuje virtuálnu konzolu pomocou VNC.

  • --noautoconsole: nepripojí sa automaticky ku konzole virtuálneho počítača.

  • -v: vytvorí plne virtualizovaný hosťovaný systém.

Po spustení virt-install sa môžete k virtuálnemu počítaču pripojiť buď lokálne pomocou grafického rozhrania alebo pomocou nástroja virt-viewer.

virt-clone

Aplikácia virt-clone sa používa na vytváranie kópie jedného virtuálneho počítača na druhý. Napríklad:

sudo virt-clone -o web_vyvoj -n databaz_vyvoj -f /cesta/k/databaz_vyvoj.img --connect=qemu:///system
  • -o: originálny virtuálny počítač

  • -n: meno nového virtuálneho počítača.

  • -f: cesta k súboru, logickému zväzku alebo diskovému oddielu, ktorý bude používať nový virtuálny počítač.

  • --connect: určuje, ku ktorému hypervízoru (virtualizátoru) sa má pripojiť.

Tiež môžete použiť -d alebo --debug ak chcete získať podrobný výpis pri riešení problémov s virt-clone.

[Note]

Mená web_vyvoj a databaz_vyvoj nahraďte menami svojich virtuálnych počítačov.

Správa virtuálnych počítačov

virsh

Existuje niekoľko nástrojov na správu virtuálnych počítačov a libvirt. Nástroj virsh sa dá používať z príkazového riadka. Niekoľko príkladov:

  • Vypísanie zoznamu spustených virtuálnych počítačov:

    virsh -c qemu:///system list
  • Spustenie virtuálneho počítača:

    virsh -c qemu:///system start web_vyvoj
  • Spustenie virtuálneho počítača pri zavádzaní systému

    virsh -c qemu:///system autostart web_vyvoj
  • Reštart virtuálneho počítača:

    virsh -c qemu:///system reboot web_vyvoj
  • Aktuálny stav virtuálneho počítača sa dá uložiť do súboru a neskôr sa dá obnoviť. Nasledujúci príkaz uloží stav virtuálneho počítača do súboru, ktorý má v mene aktuálny dátum:

    virsh -c qemu:///system save web_devel web_vyvoj-270208.state

    Po uložení virtuálny počítač zostane vypnutý.

  • Obnovenie uloženého stavu:

    virsh -c qemu:///system restore web_vyvoj-270208.state
  • Vypnutie virtuálneho počítača:

    virsh -c qemu:///system shutdown web_vyvoj
  • Pripojenie CDROMu do virtuálneho počítača:

    virsh -c qemu:///system attach-disk web_vyvoj /dev/cdrom /media/cdrom
[Note]

V predchádzajúcich príkladoch nahraďte web_vyvoj názvom vášho virtuálneho počítača a web_vyvoj-270208.state nahraďte popisnejším názvom súboru.

Správca virtuálnych počítačov

Balík virt-manager obsahuje grafický nástroj na správu lokálnych a vzdialených virtuálnych počítačov. Nástroj virt-manager nainštalujeme pomocou príkazu:

sudo apt-get install virt-manager

Kvôli tomu, že virt-manager vyžaduje grafické rozhranie (GUI), odporúčame ho nainštalovať na pracovnú stanicu a nie na server v ostrej prevádzke. Ak sa chceme pripojiť k lokálnej službe libvirt, zadáme:

virt-manager -c qemu:///system

Môžeme sa však pripojiť aj k službe libvirt, ktorá je spustená na inej stanici, zadaním nasledujúceho príkazu:

virt-manager -c qemu+ssh://virtnode1.nieco.sk/system
[Note]

V predchádzajúcom príklade predpokladáme, že sa medzi počítačmi dá nadviazať spojenie cez SSH, a že počítač virtnode1.mydomain.com už bol nakonfigurovaný a používa na autentifikáciu SSH kľúče. SSH kľúče sú nevyhnutné, pretože libvirt posiela výzvu na zadanie hesla do iného procesu. Viac informácii o konfigurovaní SSH sa nachádza v časti OpenSSH server.

Prehliadač virtuálnych počítačov

Aplikácia virt-viewer umožňuje pripojenie ku konzole virtuálneho počítača. Nástroj virt-viewer vyžaduje grafické rozhranie (GUI) aby sa vedel spojiť s virtuálnym počítačom.

Nástroj virt-viewer nainštalujeme zadaním:

sudo apt-get install virt-viewer

Ak je virtuálny počítač už nainštalovaný a spustený, môžeme sa ku nemu pripojiť zadaním nasledujúceho príkazu:

virt-viewer -c qemu:///system web_vyvoj

Podobne ako virt-manager, aj virt-viewer sa vie pripojiť k vzdialenej stanici pomocou SSH s autentifikáciou pomocou kľúčov:

virt-viewer -c qemu+ssh://virtnode1.nieco.sk/system web_vyvoj

Názov web_vývoj nahradíme názvom nášho virtuálneho počítača.

Ak sme nastavili premostenie sieťového rozhrania, môžeme nastaviť aj SSH prístup k virtuálnemu počítaču. Viac informácií sa dozvieme v častiach OpenSSH server a “Premostenie”.

Zdroje

  • Viac informácií sa dozviete na domovskej stránke KVM.

  • Viac informácií o libvirt sa dozviete na libvirt home page

  • Na stránke Virtual Machine Manager sa zasa nachádza viac informácií o vývoji nástroja virt-manager.

  • O virtualizačnej technológii v Ubuntu sa môžete dozvedieť viac aj v diskusnom kanále IRC #ubuntu-virt na freenode.

  • Ďalším dobrým zdrojom je stránka Ubuntu Wiki KVM.

JeOS a vmbuilder

Úvod

Čo je JeOS

Ubuntu JeOS (vyslovujeme "džús") je efektívny variant operačného systému Ubuntu Server, nastavený špeciálne pre prácu vo virtuálnom počítači. Tento systém sa už nedá stiahnuť ako samostatný ISO obraz disku CD-ROM, ale je ho možné nainštalovať týmito spôsobmi:

  • Počas inštalácie z obrazu disku Server Edition (stlačíme F4 na prvej obrazovke, kde vyberieme "Minimálna inštalácia", ktorá zodpovedá výberu balíkov, ktorý tvoril JeOS).

  • Vytvoríme si vlastný obraz pomocou nástroja vmbuilder, o ktorom hovoríme nižšie.

JeOS je špecializovaná inštalácia systému Ubuntu Server Edition s vyladeným jadrom, ktoré obsahuje základné prvky potrebné na beh vo virtuálnom prostredí.

Ubuntu JeOS bol vyladený tak, aby využíval kľúčové technológie na zvýšenie výkonu v posledných produktoch od VMware. Kombinácia zníženej veľkosti a optimalizovaného výkonu zaisťuje  pre Ubuntu JeOS Edition vysokú efektívnosť využitia serverových zdrojov pri rozsiahlom nasadení virtualizácie.

Systém bez nepotrebných ovládačov s minimálnym počtom balíkov si môžu ostatné spoločnosti prispôsobiť presne podľa svojich potrieb. Bezpečnostné a iné aktualizácie sú obmedzené na minimum, pretože sa aktualizuje iba najnevyhnutnejšie minimum potrebné pre chod prostredia. Používatelia pracujúci v prostredí JeOS zaznamenajú menej aktualizácií ako by zaznamenali pri štandardnej inštalácii servera.

Čo je vmbuilder

Vďaka nástroju vmbuilder už nie je potrebné sťahovať ISO obraz disku JeOS. Nástroj vmbuilder dokáže pomocou rôznych balíkov pripraviť za minútu virtuálny počítač presne podľa našich požiadaviek. Vmbuilder je skript, ktorý automatizuje proces vytvárania virtuálnych počítačov založených na Linuxe. V súčasnosti podporuje KVM a Xen.

Pomocou prepínačov príkazového riadka môžeme pridať ďalšie balíky, odstrániť balíky, zvoliť verziu Ubuntu a zrkadlo z ktorého bude sťahovať, atď. Na novom hardvéri s dostatkom pamäte RAM, priečinkom tmpdir v /dev/shm  alebo použitím súborového systému tmpfs, vytvorením lokálneho zrkadla, môžete naštartovať virtuálny počítač za menej ako minútu.

Prvý krát sa shell skript ubuntu-vm-builder objavil v Ubuntu 8.04LTS. Bol vytvorený za účelom pomoci vývojárom, ktorý potrebovali testovať svoj kód bez toho, aby museli zakaždým začínať od nuly. Niekoľko administrátorov Ubuntu začalo tento skript používať a pridali do neho rôzne vylepšenia a prispôsobili ho na konkrétne prípady, čo priviedlo Sorena Hansena (to nie je golfový hráč ale autor skriptu a špecialista na virtualizáciu Ubuntu) k tomu, aby do vydania Interpid skript od znova prepísal v jazyku Python, pričom si stanovil nové ciele:

  • Navrhnúť skript tak, aby sa dal znova použiť v iných distribúciách.

  • Použiť mechanizmus rozšírení pre všetky virtualizačné interakcie tak, aby sa dali jednoducho a logicky použiť v ostatných virtualizačných rozhraniach.

  • Poskytnúť jednoduché webové rozhranie na správu ako alternatívu k príkazovému riadku.

Základný princíp a príkazy však zostali rovnaké.

Počiatočné nastavenie

Predpokladáme, že už máme lokálne nainštalované a nakonfigurované libvirt a KVM na počítači, ktorý používame. Viac informácii o tom ako to urobiť sa nachádza:

Predpokladáme aj znalosť niektorého z textových editorov, ako napríklad nano alebo vi. Ak o textových editoroch ešte nič neviete, základný prehľad získate na stránke PowerUsersTextEditors. Tento návod je vytvorený pre KVM, ale základný princíp je rovnaký aj pre ostatné virtualizačné technológie.

Inštalácia nástroja vmbuilder

Názov balíka, ktorý je potrebné nainštalovať, je python-vm-builder. V príkazovom riadku zadáme:

sudo apt-get install python-vm-builder
[Note]

Ak používate verziu Hardy, môžete si nainštalovať staršiu verziu balíka s názvom ubuntu-vm-builder, v ktorom je len veľmi málo rozdielov v syntaxe.

Definovanie virtuálneho počítača

Definovanie virtuálneho počítača pomocou nástroja vmbuilder je veľmi jednoduché, ale je tu niekoľko vecí, ktoré je potrebné zvážiť:

  • Ak plánujete poskytovať virtuálne služby, nepredpokladajte, že koncoví používatelia budú vedieť ako si majú rozšíriť veľkosť diskového priestoru podľa svojich potrieb. Preto si buď vopred naplánujte použitie veľkého virtuálneho disku, aby sa mohlo poskytovanie služieb rozrastať, alebo napíšte veľmi zrozumiteľný návod, ako sa dá alokovať viac miest. Dobrou myšlienkou môže byť aj ukladanie dát na samostatné externé úložisko.

  • Vzhľadom k tomu,  že pamäť RAM sa oveľa jednoduchšie alokuje vo virtuálnom počítači, veľkosť RAM by mala byť nastavená na takú hodnotu, o ktorej si myslíte, že bude bezpečným minimom pre poskytovanie virtuálnych služieb.

Príkaz vmbuilder má 2 hlavné parametre: virtualizačnú technológiu (hypervisor) a cieľovú distribúciu. Ďalších niekoľko voliteľných parametrov môžete nájsť po zadaní príkazu:

vmbuilder --help

Základné parametre

V tomto príklade použijeme KVM a Ubuntu 10.04 LTS (Lucid Lynx) a budeme príkaz pre vytvorenie virtuálneho počítača postupne upresňovať, pričom budeme spúšťať príkaz vmbuilder s takýmito parametrami:

sudo vmbuilder kvm ubuntu --suite lucid --flavour virtual --arch i386  -o --libvirt qemu:///system

Prepínač --suite definuje vydanie Ubuntu, --flavour hovorí, že použijeme virtuálne jadro (to sa používa pri vytváraní obrazu JeOS), --arch hovorí, že chceme použiť 32 bitový počítač, -o povie príkazu vmbuilder aby nahradil predchádzajúcu verziu virtuálneho počítača a --libvirt informuje lokálne virtualizačné rozhranie, aby pridalo virtuálny počítač do zoznamu počítačov.

Poznámky:

  • Vzhľadom na povahu operácií, ktoré vykonáva príkaz vmbuilder, je potrebné mať oprávnenia používateľa root, teda použiť príkaz sudo.

  • Ak virtuálny počítač potrebuje používať viac ako 3Gb pamäte, mali by ste vytvoriť 64 bitový počítač (--arch amd64).

  • Až do vydania Ubuntu 8.10, bolo virtuálne jadro zostavené iba pre 32 bitovú architektúru, preto ak chcete definovať počítač s architektúrou amd64 vo vydaní Hardy, je potrebné použiť --flavour server.

Inštalačné parametre JeOS

Nastavenie siete v JeOS
Priradenie fixnej IP adresy

Keďže virtuálne služby môžu byť nasadené do najrôznejších sietí, o ktorých je veľmi ťažké zistiť ako budú vyzerať, je dobré použiť rovnaké riešenie, ako robia výrobcovia hardvéru - priradiť virtuálnemu počítaču počiatočnú fixnú IP adresu z rozsahu pre súkromné siete, s ktorou oboznámite používateľov pomocou dokumentácie. Rozsah, z ktorého by ste si mali adresu zvoliť je 192.168.0.0/255.

Ak to chceme urobiť, použijeme nasledujúce parametre:

  • --ip ADRESA: IP adresa v číselnom tvare s bodkami (použije sa ak nie je určená cez dhcp)

  • --mask HODNOTA: IP maska v číselnej podobe (predvolená hodnota: 255.255.255.0)

  • --net HODNOTA: IP adresa siete (predvolená hodnota: X.X.X.0)

  • --bcast HODNOTA: IP broadcast adresa (predvolená hodnota: X.X.X.255)

  • --gw ADRESA: Adresa brány (predvolená hodnota: X.X.X.1)

  • --dns ADRESA: Adresa DNS servera (predvolená hodnota: X.X.X.1)

My budeme predpokladať, že predvolené hodnoty sú vyhovujúce, preto použijeme nasledujúci príkaz:

sudo vmbuilder kvm ubuntu --suite lucid --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100
Úprava libvirt šablóny tak, aby sa použilo premostenie

Pretože chceme, aby k službám mohli pristupovať vzdialené stanice, je potrebné nastaviť libvirt tak, aby služba použila sieťové premostenie. Aby sme to dosiahli, použijeme mechanizmus šablón nástroja vmbuilder,  pomocou ktorého zmeníme jednu z predvolených šablón.

V našom pracovnom priečinku si vytvoríme hierarchiu šablóny a nakopírujeme do nej predvolenú šablónu:

mkdir -p VMBuilder/plugins/libvirt/templates
cp /etc/vmbuilder/libvirt/* VMBuilder/plugins/libvirt/templates/

Teraz môžeme otvoriť súbor VMBuilder/plugins/libvirt/templates/libvirtxml.tmpl a zmeniť:

          <interface type='network'>
<source network='default'/>
</interface>

Na:

          <interface type='bridge'>
<source bridge='br0'/>
</interface>
Rozdelenie disku na oddiely

Pri rozdeľovaní disku na virtuálnom počítači musíme zobrať do úvahy, na aký účel ho plánujeme použiť, pretože väčšina služieb chce mať samostatné úložisko dát. Na tento účel je vhodné vytvoriť samostatnú oddiel pre priečinok /var.

Ak to chceme urobiť, vmbuilder nám poskytne prepínač --part:

--part CESTA
Umožňuje špecifikovať tabuľku oblastí do tzv. partfile súboru. Každý riadok v partfile súbore by mal určovať
(ako prvý koreňový priečinok root):
miesto_pripojenia veľkosť
pričom veľkosť sa udáva v megabajtoch. Je možné definovať až 4 virtuálne disky. Ďalší disk sa oddeľuje
čiarou zo znakov ’---’. Napríklad :
root 1000
/opt 1000
swap 256
---
/var 2000
/log 1500

V našom prípade definujeme textový súbor vmbuilder.partition, ktorý bude obsahovať nasledujúce nastavenia:

root 8000
swap 4000
---
/var 20000
[Note]

Všimnite si, že pri použití obrazov virtuálnych diskov je veľkosť, ktorú sme im pridelili, maximálnou veľkosťou týchto jednotiek.

Náš príkaz bude teraz vyzerať takto:

sudo vmbuilder kvm ubuntu --suite lucid --flavour virtual --arch i386 \ 
-o --libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition
[Note]

Pomocou znaku "\" v príkaze je možné dlhý príkaz zalomiť do ďalšieho riadka.

Používatelia a heslá

Pri poskytovaní virtuálnej služby bude potrebné zadať predvoleného používateľa a heslo, ktoré odporúčame tiež uviesť vo vašej dokumentácii. Neskôr si v tomto návode povieme, ako budeme poskytovať zabezpečenie pomocou skriptu, ktorý sa bude spúšťať pri prvom prihlásení sa používateľa do virtuálneho počítača, ktorý si okrem iného od neho vyžiada zmenu hesla. V našom príklade použijeme ako prihlasovacie meno 'pouzivatel', a heslo 'tajne'.

Urobíme to pomocou nasledujúcich nepovinných parametrov:

  • --user MENO_POUŽÍVATEĽA: Nastaví meno používateľa, ktorý bude pridaný. Predvolene: ubuntu.

  • --name CELÉ_MENO: Nastaví celé meno používateľa, ktorý bude pridaný. Predvolene: Ubuntu.

  • --pass HESLO: Nastaví heslo pre používateľa. Predvolene: ubuntu.

Náš výsledný príkaz bude vyzerať takto:

sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 \
-o --libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition \
--user pouzivatel --name pouzivatel --pass tajne

Inštalácia požadovaných balíkov

V tomto príklade nainštalujeme balík (Limesurvey), ktorý pristupuje do databázy MySQL a má webové rozhranie. Budeme preto potrebovať náš OS vybaviť systémami:

  • Apache

  • PHP

  • MySQL

  • OpenSSH Server

  • Limesurvey (ako príklad aplikácie, ktorú chceme zahrnúť do balenia)

Robí sa to pomocou viacnásobného zadania parametra --addpkg príkazu vmbuilder:

--addpkg PKG
Nainštaluje PKG do hosťovského počítača (môže byť použitý viackrát)

Vzhľadom na to, ako vmbuilder funguje, balíky, ktoré sa potrebujú niečo opýtať používateľa počas inštalačnej fázy, nie sú podporované a mali by sa inštalovať, až keď začne fungovať interaktivita. Toto platí aj pre Limesurvey, ktorý budeme inštalovať až po prihlásení používateľa.

Ostatné balíky, ktoré sa pýtajú jednoduché otázky cez debconf (príkladom je mysql-server pýtajúci nastavenie hesla), je možné nainštalovať okamžite, ale je potrebné spustiť rekonfiguráciu po prvom prihlásení používateľa.

Ak niektoré balíky, ktoré potrebujeme nainštalovať, nie sú v hlavnom úložisku main, bude potrebné povoliť ďalšie úložiská pomocou --comp a --ppa:

--components SÚČ1,SÚČ2,...,SÚČN
zoznam čiarkami oddelených súčastí distribúcie, ktoré sa majú zahrnúť (napr.: main,universe). Predvolená hodnota
je "main"
--ppa=PPA Pridá osobný archív balíkov PPA do zoznamu zdrojov v súbore sources.list pre virtuálny počítač.

Limesurvey nie je momentálne súčasťou archívu, preto použijeme jeho adresu PPA (osobného archívu balíkov), tak že ju pridáme do súboru /etc/apt/source.list virtuálneho počítača. Do príkazu teda pridáme nasledujúce voľby:

--addpkg apache2 --addpkg apache2-mpm-prefork --addpkg apache2-utils --addpkg apache2.2-common \
--addpkg dbconfig-common --addpkg libapache2-mod-php5 --addpkg mysql-client --addpkg php5-cli \
--addpkg php5-gd --addpkg php5-ldap --addpkg php5-mysql --addpkg wwwconfig-common \
--addpkg mysql-server --ppa nijaba
OpenSSH

Ďalším praktickým nástrojom, ktorý chceme poskytovať, je OpenSSH, pretože umožní administrátorom vzdialený prístup k virtuálnemu počítaču. Poskytnutie predinštalovaného OpenSSH servera je však veľký bezpečnostný risk, pretože všetky servery vo virtuálnych počítačoch budú používať rovnaký tajný kľúč. Takže ak sa hackerovi podarí prelomiť ochranu, ľahko získa prístup ku všetkým virtuálnym počítačom. Preto tak, ako pri používateľskom hesle, použijeme skript, ktorý nainštaluje OpenSSH pri prvom prihlásení používateľa, takže vygenerovaný kľúč bude odlišný v každom virtuálnom počítači. Na tento účel použijeme --firstboot skript, pretože nevyžaduje žiadnu interakciu z používateľom.

Faktor rýchlosti

Uloženie balíkov do vyrovnávacej pamäte

Keď vmbuilder vytvára zostavu vášho systému, musí stiahnuť každý balík cez sieť z jedného z oficiálnych úložísk, čo môže v závislosti od rýchlosti internetového spojenia a záťaže zrkadla významne ovplyvniť rýchlosť vytvárania systému. Ak chceme tento čas skrátiť, je vhodné buď vytvoriť lokálne úložisko (ktoré môžeme vytvoriť pomocou apt-mirror) alebo použiť medzičlánok (proxy) s vyrovnávacou pamäťou, ako napríklad apt-proxy. Druhá možnosť je jednoduchšia na implementáciu a vyžaduje menej diskového priestoru, a preto ju použijeme aj v tomto návode. Vyrovnávaciu pamäť nainštalujeme zadaním príkazu:

sudo apt-get install apt-proxy

Po dokončení je prázdny medzičlánok proxy pripravený na adrese http://mirroraddress:9999 a úložisko systému Ubuntu sa bude vytvárať v priečinku /ubuntu. Aby ho príkaz vmbuilder použil, použijeme voľbu --mirror:

--mirror=URL  Použije zrkadlo úložiska (mirror) Ubuntu na zadanej URL adrese namiesto predvolených
úložísk na adresách http://archive.ubuntu.com/ubuntu s oficiálnymi
archívmi a http://ports.ubuntu.com/ubuntu-ports
s ostatnými

Pridáme preto do príkazu nasledujúce:

--mirror http://mirroraddress:9999/ubuntu
[Note]

Adresa zrkadla, ktorú zadáme, sa použije aj v súbore /etc/apt/source.list novo vytvoreného virtuálneho počítača, preto je užitočné zadať takú adresu, na ktorú bude mať hosťovský počítač prístup alebo naplánovať zmenu adresy neskôr, napríklad pomocou skriptu --firstboot.

Inštalácia lokálneho úložiska

Ak sa nachádzame v rozsiahlejšom prostredí, môžeme sa zamerať na nastavenie lokálneho zrkadla úložísk Ubuntu. Balík apt-mirror nám poskytne skripty, ktoré budú za nás obsluhovať zrkadlenie. Mali by sme si vyhradiť asi 20 gigabajtov voľného diskového priestoru pre podporované vydania a architektúry.

V predvolenom stave apt-mirror použije konfiguračný súbor /etc/apt/mirror.list. Keď ho nastavíme, bude replikovať iba architektúru vhodnú pre náš počítač. Ak chceme v zrkadle podporovať aj ostatné architektúry, stačí skopírovať riadky v súbore začínajúce “deb” a nahradiť deb kľúčovým slovom /deb-{arch}, pričom arch môže byť i386, amd64, atď... Napríklad na počítači s architektúrou amd64 môžeme poskytovať archívy pre architektúru i386 doplnením riadkov:

deb  http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse  
/deb-i386 http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
 
deb http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
 
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
/deb-i386 http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse  

deb http://archive.ubuntu.com/ubuntu lucid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer
/deb-i386 http://archive.ubuntu.com/ubuntu lucid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/deb

Všimnite si, že zdrojové balíky nie sú zrkadlené, pretože sa v porovnaní s binárnymi súbormi používajú zriedkavo a zaberajú oveľa viac miesta. Ak budeme chcieť, môžeme ich jednoducho pridať do zoznamu.

Keď zrkadlo skončí replikáciu (čo môže trvať dlho), je potrebné nastaviť webový server Apache, aby zrkadlené súbory v priečinku /var/spool/apt-mirror (ak ste nezmenili predvolené umiestnenie) boli publikované cez webový server Apache. Viac informácií o webovom serveri Apache sa nachádza v časti HTTPD - webový server Apache2.

Inštalácia v RAM Disku

Všetci vieme, že zápis do operačnej pamäte RAM je OMNOHO rýchlejší ako zápis na disk. Ak máte nejakú voľnú pamäť, v ktorej by ste mohli nechať vmbuilder vykonávať jeho operácie na tzv. RAMdisku, veľmi by to pomohlo. RAMdisk vytvoríme pomocou voľby --tmpfs:

--tmpfs OPTS  Použije tmpfs ako pracovný priečinok, pričom určíme jeho 
veľkosť alebo zadaním "-" použijeme predvolené tmpfs (suid,dev,size=1G).

Preto pridanie --tmpfs - je veľmi dobrý nápad, ak máte 1G voľnej operačnej pamäte.

Zbalenie aplikácie

Máme dve možnosti:

  • Odporúčaný spôsob, ako to urobiť je vytvorenie Debian balíka. Pretože toto je už mimo rámec nášho návodu, nebudeme to tu robiť, ale povieme si, že návod, ako to urobiť, sa nachádza na stránke Ubuntu Packaging Guide. V tomto prípade je tiež vhodné vytvoriť pre balík úložisko, z ktorého bude možné jednoducho stiahnuť aktualizovaný balík. Návod, ako to urobiť, nájdete na stránke Debian Administration.

  • Ručná inštalácia aplikácie do priečinka /opt podľa odporúčaní FHS guidelines.

V našom prípade použijeme Limesurvey ako príklad webovej aplikácie, kvôli ktorej poskytujeme virtuálny počítač. Ako sme už poznamenali, použijeme verziu, ktorá je dostupná v PPA (osobnom archíve balíkov).

Dokončenie inštalácie

Prvý štart

Tak ako sme hovorili už skôr, pri prvom spustení virtuálneho počítača je potrebné nainštalovať openssh-server, aby bol generovaný kľúč jedinečný pre každý virtuálny počítač. Urobíme to pomocou skriptu s názvom boot.sh takto:

# Tento skript sa spustí pri prvom spustení virtuálneho počítača
# Bude spustený pod používateľom root.

apt-get update
apt-get install -qqy --force-yes openssh-server

A teraz pridáme voľbu --firstboot boot.sh do príkazu.

Prvé prihlásenie

Systémy Mysql a Limesurvey vyžadujú trocha interakcie počas nastavovania, nastavíme ich pri prvom prihlásení používateľa pomocou skriptu s názvom login.sh. Tento skript použijeme aj na to, aby používateľ mohol zadať:

  • svoje vlastné heslo

  • akú bude používať klávesnicu a ostatné regionálne nastavenia

Skript login.sh preto zadefinujeme nasledovne:

# Tento skript sa spustí pri prvom prihlásení používateľa 

echo "Virtuálny počítač je teraz potrebné nastaviť."
echo "Bude potrebné odpovedať na niekoľko otázok."
echo "Začneme zmenou vášho používateľského hesla"

passwd

#poskytnutie možnosti zmeny klávesnice
sudo dpkg-reconfigure console-setup

#nastavenie hesla používateľa root databázového servera mysql
sudo dpkg-reconfigure mysql-server-5.0

#inštalácia limesurvey
sudo apt-get install -qqy --force-yes limesurvey

echo "Virtuálny počítač je teraz nastavený. Zadajte do prehliadača"
echo "adresu http://serverip/limesurvey/admin"

A potom pridáme do príkazu voľbu --firstlogin login.sh.

Užitočné doplnky

Nastavenie automatických aktualizácií

Ak chceme, aby virtuálny počítač sám seba aktualizoval, stačí nainštalovať unattended-upgrades. Preto pridáme nasledujúcu voľbu do príkazu:

--addpkg unattended-upgrades

Pretože sme pridali aplikáciu z PPA úložiska, proces aktualizácie nebude aktualizovať len systém, ale aj danú aplikáciu, a to vždy, keď sa objaví nová verzia v PPA úložisku.

Obsluha udalostí ACPI

Aby virtuálne počítače dokázali spracovať signál pre vypnutie a reštart, je vhodné nainštalovať aj balík acpid. Urobíme to pridaním nasledujúcej voľby do príkazu:

--addpkg acpid

Výsledný príkaz

Tu je výsledný príkaz so všetkými voľbami, o ktorých sme hovorili:

sudo vmbuilder kvm ubuntu --suite lucid --flavour virtual --arch i386 -o \ 
--libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition --user user \
--name user --pass default --addpkg apache2 --addpkg apache2-mpm-prefork \
--addpkg apache2-utils --addpkg apache2.2-common --addpkg dbconfig-common \
--addpkg libapache2-mod-php5 --addpkg mysql-client --addpkg php5-cli \
--addpkg php5-gd --addpkg php5-ldap --addpkg php5-mysql --addpkg wwwconfig-common \
--addpkg mysql-server --addpkg unattended-upgrades --addpkg acpid --ppa nijaba \
--mirror http://mirroraddress:9999/ubuntu --tmpfs - --firstboot boot.sh \
--firstlogin login.sh es

Zdroje

Ak sa chcete dozvedieť viac, máte otázky alebo pripomienky, kontaktujte náš Ubuntu Server Tím cez:

Defining Your Virtual Machine

Defining a virtual machine with Ubuntu's vmbuilder is quite simple, but here are a few thing to consider:

  • If you plan on shipping a virtual appliance, do not assume that the end-user will know how to extend disk size to fit their need, so either plan for a large virtual disk to allow for your appliance to grow, or explain fairly well in your documentation how to allocate more space. It might actually be a good idea to store data on some separate external storage.

  • Given that RAM is much easier to allocate in a VM, RAM size should be set to whatever you think is a safe minimum for your appliance.

The vmbuilder command has 2 main parameters: the virtualization technology (hypervisor) and the targeted distribution. Optional parameters are quite numerous and can be found using the following command:

vmbuilder --help

Base Parameters

As this example is based on KVM and Ubuntu 9.10 (Karmic Koala), and we are likely to rebuild the same virtual machine multiple time, we'll invoke vmbuilder with the following first parameters:

sudo vmbuilder kvm ubuntu --suite karmic --flavour virtual --arch i386  -o --libvirt qemu:///system

The --suite defines the Ubuntu release, the --flavour specifies that we want to use the virtual kernel (that's the one used to build a JeOS image), the --arch tells that we want to use a 32 bit machine, the -o tells vmbuilder to overwrite the previous version of the VM and the --libvirt tells to inform the local virtualization environment to add the resulting VM to the list of available machines.

Notes:

  • Because of the nature of operations performed by vmbuilder, it needs to have root privilege, hence the use of sudo.

  • If your virtual machine needs to use more than 3Gb of ram, you should build a 64 bit machine (--arch amd64).

  • Until Ubuntu 8.10, the virtual kernel was only built for 32 bit architecture, so if you want to define an amd64 machine on Hardy, you should use --flavour server instead.

JeOS Installation Parameters

JeOS Networking
Assigning a fixed IP address

As a virtual appliance that may be deployed on various very different networks, it is very difficult to know what the actual network will look like. In order to simplify configuration, it is a good idea to take an approach similar to what network hardware vendors usually do, namely assigning an initial fixed IP address to the appliance in a private class network that you will provide in your documentation. An address in the range 192.168.0.0/255 is usually a good choice.

To do this we'll use the following parameters:

  • --ip ADDRESS: IP address in dotted form (defaults to dhcp if not specified)

  • --mask VALUE: IP mask in dotted form (default: 255.255.255.0)

  • --net VALUE: IP net address (default: X.X.X.0)

  • --bcast VALUE: IP broadcast (default: X.X.X.255)

  • --gw ADDRESS: Gateway address (default: X.X.X.1)

  • --dns ADDRESS: Name server address (default: X.X.X.1)

We assume for now that default values are good enough, so the resulting invocation becomes:

sudo vmbuilder kvm ubuntu --suite karmic --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100
Modifying the libvirt Template to use Bridging

Because our appliance will be likely to need to be accessed by remote hosts, we need to configure libvirt so that the appliance uses bridge networking. To do this we use vmbuilder template mechanism to modify the default one.

In our working directory we create the template hierarchy and copy the default template:

mkdir -p VMBuilder/plugins/libvirt/templates
cp /etc/vmbuilder/libvirt/* VMBuilder/plugins/libvirt/templates/

We can then edit VMBuilder/plugins/libvirt/templates/libvirtxml.tmpl to change:

          <interface type='network'>
<source network='default'/>
</interface>

To:

          <interface type='bridge'>
<source bridge='br0'/>
</interface>
Partitioning

Partitioning of the virtual appliance will have to take into consideration what you are planning to do with is. Because most appliances want to have a separate storage for data, having a separate /var would make sense.

In order to do this vmbuilder provides us with --part:

--part PATH
Allows to specify a partition table in partfile each line of partfile should specify
(root first):
mountpoint size
where size is in megabytes. You can have up to 4 virtual disks, a new disk starts on a
line with ’---’. ie :
root 1000
/opt 1000
swap 256
---
/var 2000
/log 1500

In our case we will define a text file name vmbuilder.partition which will contain the following:

root 8000
swap 4000
---
/var 20000
[Note]

Note that as we are using virtual disk images, the actual sizes that we put here are maximum sizes for these volumes.

Our command line now looks like:

sudo vmbuilder kvm ubuntu --suite karmic --flavour virtual --arch i386 \ 
-o --libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition
[Note]

Using a "\" in a command will allow long command strings to wrap to the next line.

User and Password

Again setting up a virtual appliance, you will need to provide a default user and password that is generic so that you can include it in your documentation. We will see later on in this tutorial how we will provide some security by defining a script that will be run the first time a user actually logs in the appliance, that will, among other things, ask him to change his password. In this example I will use 'user' as my user name, and 'default' as the password.

To do this we use the following optional parameters:

  • --user USERNAME: Sets the name of the user to be added. Default: ubuntu.

  • --name FULLNAME: Sets the full name of the user to be added. Default: Ubuntu.

  • --pass PASSWORD: Sets the password for the user. Default: ubuntu.

Our resulting command line becomes:

sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 \
-o --libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition \
--user user --name user --pass default

Installing Required Packages

In this example we will be installing a package (Limesurvey) that accesses a MySQL database and has a web interface. We will therefore require our OS to provide us with:

  • Apache

  • PHP

  • MySQL

  • OpenSSH Server

  • Limesurvey (as an example application that we have packaged)

This is done using vmbuilder by specifying the --addpkg command multiple times:

--addpkg PKG
Install PKG into the guest (can be specfied multiple times)

However, due to the way vmbuilder operates, packages that have to ask questions to the user during the post install phase are not supported and should instead be installed while interactivity can occur. This is the case of Limesurvey, which we will have to install later, once the user logs in.

Other packages that ask simple debconf question, such as mysql-server asking to set a password, the package can be installed immediately, but we will have to reconfigure it the first time the user logs in.

If some packages that we need to install are not in main, we need to enable the additional repositories using --comp and --ppa:

--components COMP1,COMP2,...,COMPN
A comma separated list of distro components to include (e.g. main,universe). This defaults
to "main"
--ppa=PPA Add ppa belonging to PPA to the vm's sources.list.

Limesurvey not being part of the archive at the moment, we'll specify it's PPA (personal package archive) address so that it is added to the VM /etc/apt/source.list, so we add the following options to the command line:

--addpkg apache2 --addpkg apache2-mpm-prefork --addpkg apache2-utils --addpkg apache2.2-common \
--addpkg dbconfig-common --addpkg libapache2-mod-php5 --addpkg mysql-client --addpkg php5-cli \
--addpkg php5-gd --addpkg php5-ldap --addpkg php5-mysql --addpkg wwwconfig-common \
--addpkg mysql-server --ppa nijaba

OpenSSH

Another convenient tool that we want to have on our appliance is OpenSSH, as it will allow our admins to access the appliance remotely. However, pushing in the wild an appliance with a pre-installed OpenSSH server is a big security risk as all these server will share the same secret key, making it very easy for hackers to target our appliance with all the tools they need to crack it open in a breeze. As for the user password, we will instead rely on a script that will install OpenSSH the first time a user logs in so that the key generated will be different for each appliance. For this we'll use a --firstboot script, as it does not need any user interaction.

Speed Considerations

Package Caching

When vmbuilder creates builds your system, it has to go fetch each one of the packages that composes it over the network to one of the official repositories, which, depending on your internet connection speed and the load of the mirror, can have a big impact on the actual build time. In order to reduce this, it is recommended to either have a local repository (which can be created using apt-mirror) or using a caching proxy such as apt-cache. The later option being much simpler to implement and requiring less disk space, it is the one we will pick in this tutorial. To install it, simply type:

sudo apt-get install apt-proxy

Once this is complete, your (empty) proxy is ready for use on http://mirroraddress:9999 and will find ubuntu repository under /ubuntu. For vmbuilder to use it, we'll have to use the --mirror option:

--mirror=URL  Use Ubuntu mirror at URL instead of the default, which
is http://archive.ubuntu.com/ubuntu for official
arches and http://ports.ubuntu.com/ubuntu-ports
otherwise

So we add to the command line:

--mirror http://mirroraddress:9999/ubuntu
[Note]

The mirror address specified here will also be used in the /etc/apt/source.list of the newly created guest, so it is usefull to specify here an address that can be resolved by the guest or to plan on reseting this address later on, such as in a --firstboot script.

Install a Local Mirror

If we are in a larger environment, it may make sense to setup a local mirror of the Ubuntu repositories. The package apt-mirror provides you with a script that will handle the mirroring for you. You should plan on having about 20 gigabyte of free space per supported release and architecture.

By default, apt-mirror uses the configuration file in /etc/apt/mirror.list. As it is set up, it will replicate only the architecture of the local machine. If you would like to support other architectures on your mirror, simply duplicate the lines starting with “deb”, replacing the deb keyword by /deb-{arch} where arch can be i386, amd64, etc... For example, on an amd64 machine, to have the i386 archives as well, you will have:

deb  http://archive.ubuntu.com/ubuntu karmic main restricted universe multiverse 
/deb-i386 http://archive.ubuntu.com/ubuntu karmic main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu karmic-updates main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu karmic-updates main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse
/deb-i386 http://archive.ubuntu.com/ubuntu karmic-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu karmic-security main restricted universe multiverse
/deb-i386 http://security.ubuntu.com/ubuntu karmic-security main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu karmic main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer
/deb-i386 http://archive.ubuntu.com/ubuntu karmic main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer

Notice that the source packages are not mirrored as they are seldom used compared to the binaries and they do take a lot more space, but they can be easily added to the list.

Once the mirror has finished replicating (and this can be quite long), you need to configure Apache so that your mirror files (in /var/spool/apt-mirror if you did not change the default), are published by your Apache server. For more information on Apache see the section called “HTTPD - Apache2 Web Server”.

Installing in a RAM Disk

As you can easily imagine, writing to RAM is a LOT faster than writing to disk. If you have some free memory, letting vmbuilder perform its operation in a RAMdisk will help a lot and the option --tmpfs will help you do just that:

--tmpfs OPTS  Use a tmpfs as the working directory, specifying its
size or "-" to use tmpfs default (suid,dev,size=1G).

So adding --tmpfs - sounds like a very good idea if you have 1G of free ram.

Package the Application

Two option are available to us:

  • The recommended method to do so is to make a Debian package. Since this is outside of the scope of this tutorial, we will not perform this here and invite the reader to read the documentation on how to do this in the Ubuntu Packaging Guide. In this case it is also a good idea to setup a repository for your package so that updates can be conveniently pulled from it. See the Debian Administration article for a tutorial on this.

  • Manually install the application under /opt as recommended by the FHS guidelines.

In our case we'll use Limesurvey as example web application for which we wish to provide a virtual appliance. As noted before, we've made a version of the package available in a PPA (Personal Package Archive).

Finishing Install

First Boot

As we mentioned earlier, the first time the machine boots we'll need to install openssh-server so that the key generated for it is unique for each machine. To do this, we'll write a script called boot.sh as follows:

# This script will run the first time the virtual machine boots
# It is ran as root.

apt-get update
apt-get install -qqy --force-yes openssh-server

And we add the --firstboot boot.sh option to our command line.

First Login

Mysql and Limesurvey needing some user interaction during their setup, we'll set them up the first time a user logs in using a script named login.sh. We'll also use this script to let the user specify:

  • His own password

  • Define the keyboard and other locale info he wants to use

So we'll define login.sh as follows:

# This script is ran the first time a user logs in

echo "Your appliance is about to be finished to be set up."
echo "In order to do it, we'll need to ask you a few questions,"
echo "starting by changing your user password."

passwd

#give the opportunity to change the keyboard
sudo dpkg-reconfigure console-setup

#configure the mysql server root password
sudo dpkg-reconfigure mysql-server-5.0

#install limesurvey
sudo apt-get install -qqy --force-yes limesurvey

echo "Your appliance is now configured. To use it point your"
echo "browser to http://serverip/limesurvey/admin"

And we add the --firstlogin login.sh option to our command line.

Useful Additions

Configuring Automatic Updates

To have your system be configured to update itself on a regular basis, we will just install unattended-upgrades, so we add the following option to our command line:

--addpkg unattended-upgrades

As we have put our application package in a PPA, the process will update not only the system, but also the application each time we update the version in the PPA.

ACPI Event Handling

For your virtual machine to be able to handle restart and shutdown events it is being sent, it is a good idea to install the acpid package as well. To do this we just add the following option:

--addpkg acpid

Final Command

Here is the command with all the options discussed above:

sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 -o \ 
--libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition --user user \
--name user --pass default --addpkg apache2 --addpkg apache2-mpm-prefork \
--addpkg apache2-utils --addpkg apache2.2-common --addpkg dbconfig-common \
--addpkg libapache2-mod-php5 --addpkg mysql-client --addpkg php5-cli \
--addpkg php5-gd --addpkg php5-ldap --addpkg php5-mysql --addpkg wwwconfig-common \
--addpkg mysql-server --addpkg unattended-upgrades --addpkg acpid --ppa nijaba \
--mirror http://mirroraddress:9999/ubuntu --tmpfs - --firstboot boot.sh \
--firstlogin login.sh es

Resources

If you are interested in learning more, have questions or suggestions, please contact the Ubuntu Server Team at:

UEC

Prehľad

Tento návod hovorí o inštalácii UEC z CD disku Ubuntu 10.04 LTS Server Edition, pričom predpokladá použitie základnej topológie siete s jednoduchou obsluhou v štýle "všetko v jednom" a s jedným alebo viacerými pripojenými uzlami.

V tomto návode sa naučíme, ako nainštalovať, nakonfigurovať, zaregistrovať a vykonávať základné operácie v nastaveniach UEC, čím získame jedného správcu mraku (cloud controller) s "rozhraním" a jeden alebo viacero uzlov na spúšťanie inštancií virtuálnych počítačov (VM). V začiatkoch nám pomôžu aj príklady využitia vlastného súkromného mraku.

Požiadavky

Ak chceme implementovať najmenšiu infraštruktúru mraku, potrebujeme najmenej dva špecializované systémy:

  • Rozhranie.
  • Jeden alebo viac uzlov.

Z nasledujúcej časti odporúčame miesto fixných požiadaviek použiť odporúčania vychádzajúce zo skúseností autorov tejto dokumentácie.

Požiadavky na rozhranie

Nasledujúca tabuľka platí pre systém, na ktorom bude bežať jeden alebo viac:

  • Správca mraku - Cloud Controller (CLC)
  • Správca klastra - Cluster Controller (CC)
  • Walrus (úložisko dát podobné službe S3)
  • Správca úložiska - Storage Controller (SC)

Požiadavky rozhrania UEC

Hardvér Minimum Odporúčané Poznámky
CPU1 GHz2 x 2 GHzPre rozhranie všetko v jednom je vhodné, ak budeme mať aspoň dvojjadrový procesor.
Pamäť
512 MB
2 GBPre rozhranie v jazyku Java bude lepšie ak bude mať veľa dostupnej pamäte.
Disk5400 ot./min IDE7200 ot./min SATAPomalšie disky fungujú, ale bude potrebný oveľa dlhší čas na štart inštancie.
Miesto na disku40 GB200 GB40GB je miesto len pre jeden obraz, vyrovnávaciu pamäť, atď. Eucalyptus nemá rád keď mu dôjde voľné miesto na disku.
Sieť100 Mbps1000 MbpsObrazy počítačov majú stovky MB a je potrebné, aby sa po sieti kopírovali na uzly

Požiadavky uzlov

Ďalšími systémami sú uzly, na ktorých bude spustený:

  • Správca uzla - Node Controller (NC)

Požiadavky uzlov UEC

Hardvér Minimum Odporúčané Poznámky
CPURozšírenia pre VTVT, 64-bit, Viac jadier64 bitové systémy umožňujú spúšťať inštancie pre architektúry i386 aj amd64. Eucalyptus umožňuje spustiť na jednom uzle iba jeden virtuálny počítač na jadro procesora.
Pamäť
1 GB
4 GBViac pamäte zamená viac hosťujúcich systémov a umožnuje imlementovať rozsiahlejšie systémy.
Disk5400 ot./min IDE7200 ot./min SATA alebo SCSI
Uzly systému Eucalyptus sú závislé od rýchlosti disku; čakanie na V/V operácie bude predstavovať úzke hrdlo pri výkone.
Miesto na disku40 GB100 GBObrazy sa  ukladajú do lokálnej vyrovnávacej pamäte. Eucalyptus nemá rád nedostatok miesta na disku.
Sieť100 Mbps1000 MbpsObrazy počítačov majú stovky MB a je potrebné, aby sa po sieti kopírovali na uzly

Inštalácia mraku, klastra, úložiska, a systému Wairus na server s rozhraním

  1. Stiahneme ISO súbor systému Ubuntu 10.04 LTS Server ISO a napálime ho na CD disk.
  2. Pri zavádzaní systému vyberieme “Install Ubuntu Enterprise Cloud”.
  3. Na otázku, či chceme nainštalovať “Cluster” alebo “Node” vyberieme “Cluster”.
  4. Počas inštalácie dostaneme ešte ďalšie dve otázky týkajúce sa mraku:
    • Názov mraku.
      napr.: mrak1.
    • Rozsah verejných IP adries v LAN, ktoré mrak automaticky vyhradí pre inštancie.
      napr. 192.168.1.200-192.168.1.249.

Inštalácia správcu uzla (uzlov)

Inštalácia správcu uzla je ešte jednoduchšia. Iba sa uistíme, či máme pripojenie do siete, v ktorej už beží správca mraku alebo klastra.

  1. Na zavedenie systému na uzloch použijeme rovnaký ISO súbor.
  2. Vyberieme “Install Ubuntu Enterprise Cloud”.
  3. Teraz by inštalátor mal automaticky rozpoznať prítomnosť klastra a predvoliť možnosť inštalácie uzla - “Node”.
  4. Potvrdíme schému rozdelenia disku.
  5. Zvyšok inštalácie by mal prebehnúť bez prerušenia. Dokončíme inštaláciu a reštartujeme uzol.

Registrácia uzla (uzlov)

Uzly sú fyzické systémy v rámci UEC,  na ktorých v skutočnosti bežia inštancie virtuálnych počítačov mraku.

Po tom, ako je na jeden alebo viacero uzlov nainštalovaný Ubuntu Server a beží na nich služba eucalyptus-nc, prihlásime sa do Správcu mraku (CLC) a spustíme:

sudo euca_conf --no-rsync --discover-nodes

Tento príkaz preskúma systémy bežiace v sieti so spustenou službou eucalyptus-nc a administrátor môže potvrdiť registráciu každého uzla podľa jeho IP adresy.

Ak systém od nás bude vyžadovať heslá, alebo cez scp zašle chyby, bude potrebné prejsť inštrukcie na synchronizáciu kľúčov podľa UEC/NodeInstallation.

Získanie poverení

Po nainštalovaní a zavedení <emphasis>Správcu mraku</emphasis> je potrebné, aby používatelia získali svoje poverenia. To sa dá urobiť buď cez webový prehliadač alebo cez príkazový riadok.

Cez webový prehliadač

  1. Vo webovom prehliadači (buď zo vzdialeného počítača alebo priamo na serveri Ubuntu) zadáme nasledujúcu URL adresu:
    https://<ip-adresa-správcu-mraku>:8443/
    [Caution] Musíte použiť zabezpečené pripojenie, preto sa uistite či ste v URL adrese použili "https" a nie "http". Po zadaní sa zobrazí varovanie o bezpečnosti certifikátu. Tu je potrebné pridať výnimku aby sa stránka zobrazila. Ak výnimku nepotvrdíte, nebude možné zobraziť konfiguračnú stránku systému Eucalyptus.
  2. Pri prvom prihlásení použijeme prihlasovacie meno 'admin' a heslo 'admin' (po prihlásení nas systém vyzve na zmenu hesla).
  3. Potom budeme postupovať podľa zobrazený inštrukcií na zmenu hesla správcu a jeho emailovej adresy.
  4. Po dokončení prvotného konfiguračného procesu, klikneme na kartu 'credentials' umiestnenú v ľavej hornej časti obrazovky.
  5. Klikneme na tlačidlo 'Download Credentials' čím získame naše poverenia.
  6. Súbor uložíme do priečinka <filename>~/.euca</filename>.
  7. Rozbalíme stiahnutý súbor do bezpečného miesta (<filename>~/.euca</filename>).
    unzip -d ~/.euca mycreds.zip

Cez príkazový riadok

  1. Ak máme k dispozícii len príkazový riadok <emphasis>Správcu mraku</emphasis>, použijeme takýto postup:
    mkdir -p ~/.euca
    chmod 700 ~/.euca
    cd ~/.euca
    sudo euca_conf --get-credentials mycreds.zip
    unzip mycreds.zip
    ln -s ~/.euca/eucarc ~/.eucarc
    cd -

Rozbalenie a používanie poverení

Teraz bude potrebné na našom serveri pomocou certifikátov X.509 nastaviť EC2 API a nástroje AMI.  

  1. Spustíme rozbalený súbor "eucarc", ktorým nastavíme prostredie systému Eucalyptus:
    . ~/.euca/eucarc
  2. Môžeme tiež tento príkaz pridať do súboru ~/.bashrc, aby sa prostredie Eucalyptus nastavilo automaticky po prihlásení. Eucalyptus zaobchádza s touto sadou poverení ako s povereniami 'administratora', ktoré umožnia držiteľovi globálnych prifilégii prechádzať mrak. Ako také by mali byť chráné rovnakým sposobom, ako sú chránené ostatné úrovne prístupu (napr. by nemali byť viditeľné pre bežných používateľov).
    echo "[ -r ~/.euca/eucarc ] && . ~/.euca/eucarc" >> ~/.bashrc
  3. Nainštalujeme potrebné používateľské nástroje mraku:
    sudo apt-get install euca2ools
  4. Keď chceme overiť, či všetko pracuje správne, vyžiadame si podrobnosti o dostupnosti lokálneho klastra:
    . ~/.euca/eucarc
    euca-describe-availability-zones verbose
    AVAILABILITYZONE myowncloud 192.168.1.1
    AVAILABILITYZONE |- vm types free / max cpu ram disk
    AVAILABILITYZONE |- m1.small 0004 / 0004 1 128 2
    AVAILABILITYZONE |- c1.medium 0004 / 0004 1 256 5
    AVAILABILITYZONE |- m1.large 0002 / 0002 2 512 10
    AVAILABILITYZONE |- m1.xlarge 0002 / 0002 2 1024 20
    AVAILABILITYZONE |- c1.xlarge 0001 / 0001 4 2048 20
[Note]

Váš výstup z predchádzajúceho príkazu sa bude líšiť.

Spustenie obrazu

Existuje mnoho spôsobov, akými sa dajú vytvárať inštancie obrazu v UEC:  

  • Použitím príkazového riadka 
  • Použitím jedného z nástrojov na správu UEC, akým je napríklad Landscape. 
  • Použitím rozšírenia pre prehliadač Firefox s názvom ElasticFox.

V tomto návode popíšeme postup pomocou príkazového riadka:

  1. Pred spustením inštancie nášho obrazu, by sme mali najskôr vytvoriť dvojicu kľúčov (ssh), prostredníctvom ktorých sa do inštancie po jej zavedení prihlásime ako používateľ root. Kľúč sa uloží, preto stačí, ak to urobíme raz.
    Spustíme nasledujúci príkaz:
    if [ ! -e ~/.euca/mykey.priv ]; then
    mkdir -p -m 700 ~/.euca
    touch ~/.euca/mykey.priv
    chmod 0600 ~/.euca/mykey.priv
    euca-add-keypair mykey > ~/.euca/mykey.priv
    fi
    [Note]

    Váš kľúč môžete nazvať ako chcete (v tomto príklade sa kľúč volá <emphasis>'mykey'</emphasis>), nesmiete však zabudnúť, ako sa volá. Ak zabudnete, môžete spustiť príkaz <command>euca-describe-keypairs</command>, ktorým zobrazíte zoznam vytvorených kľúčov uložených v systéme.

  2. Musíme tiež v naších inštanciách povoliť prístup k portu 22:
    euca-describe-groups
    euca-authorize default -P tcp -p 22 -s 0.0.0.0/0
  3. Ako ďalší krok môžeme vytvoriť inštancie našich registrovaných obrazov:
    euca-run-instances $EMI -k mykey -t m1.small
    [Note]

    Ak sa zobrazí chyba vzťahujúca sa k <emphasis>image_id</emphasis>, podrobnosti môžete nájsť zobrazením stránky Images alebo klknutím na <emphasis>"How to Run"</emphasis> na stránke <emphasis>Store</emphasis>, na ktorej nájdete ukážky príkazov.

  4. Pri prvom spustení inštancie, systém nastaví vyrovnávacie pamäte pre obraz, z ktorého bol vytvorený. Toto môže trvať nejaký čas, preto prvé spustenie inštancie obrazu virtuálneho počítača zvyčajne trvá dosť dlho.
    Keď chceme sledovať stav našej inštancie, spustíme:
    watch -n5 euca-describe-instance
    Vo výstupe príkazu by sme mali vidieť informácie o inštancii vrátane jej stavu. Keď prebieha ukladanie do vyrovnávacej pamäte počas prvého spustenia, stav inštancie je <emphasis>'pending'</emphasis>.
  5. Keď sa inštancia úplne naštartuje, je stav sa zmení na <emphasis>'running'</emphasis>. Vo výstupe si pozrieme IP adresu priradenú inštancii a potom sa k nej pripojíme:
    IPADDR=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk '{print $4}')
    ssh -i ~/.euca/mykey.priv ubuntu@$IPADDR
  6. Keď skončíme prácu v inštancii, opustíme naše SSH pripojenie a potom ukončíme inštanciu:
    INSTANCEID=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk '{print $2}')
    euca-terminate-instances $INSTANCEID

Inštalácia obrazu z úložiska

Nasledujúci postup predstavuje najjednoduchší spôsob, ako nainštalovať obraz. Pokročilejší používatelia sa však môžu zaujímať o to, ako Pripojiť svoj vlastný obraz.

Najjednoduchší spôsob, ako pridať obraz do UEC, je nainštalovať ho z Úložiska obrazov prostredníctvom webového rozhrania UEC.

  1. Otvoríme webové rozhranie na nasledujúcej URL adrese (Uistite sa že ste zadali https):
    https://<ip-adresa-správcu-mraku>:8443/
  2. Zadáme prihlasovacie meno a heslo (ak budeme o to požiadaný, a nebudeme už prihlásený).
  3. Klikneme na kartu Store.
  4. Prelistujeme zoznam dostupných obrazov.
  5. Klikneme na install pri obraze, ktorý chceme nainštalovať.

Po stiahnutí a nainštalovaní môžeme kliknúť na odkaz <emphasis>"How to run?"</emphasis>, ktorý pod tlačidlom zobrazí príkaz na vytvorenie inštancie (spustenie) tohto obrazu.

Ďalšie informácie

Návod na používanie Správcu úložiska.

Ovládanie služieb eucalyptus:

  • sudo service eucalyptus [start|stop|restart] (na strane CLC/CC/SC/Walrus)
  • sudo service eucalyptus-nc [start|stop|restart] (na strane uzla)

Umiestnenie niektorých dôležitých súborov:

  • Súbory záznamov:
    /var/log/eucalyptus
  • Konfiguračné súbory:
    /etc/eucalyptus
  • Databáza:
    /var/lib/eucalyptus/db
  • Kľúče:
    /var/lib/eucalyptus
    /var/lib/eucalyptus/.ssh

Upozornenia:

  • Nesmieme zabudnúť súbor <filename>~/.euca/eucarc</filename> spustiť skôr, ako spustíme klientské nástroje.

Odkazy:

Slovník

 

Dokumentácia pre Ubuntu Enterprise Cloud používa terminológiu, ktorá nemusí byť zrozumiteľná pre všetkých čitateľov. Táto stránka sa snaží vysvetliť niektoré pojmy a skratky.

  • Mrak (Cloud) - Združená množina fyzických počítačov, ktoré poskytujú výpočtové zdroje prostredníctvom virtuálnych počítačov, ktoré sú dynamicky zaopatrované a dovybavované.

  • Správca mraku (Cloud Controller - CLC) - Súčasť systému Eucalyptus, ktorá poskytuje webové užívateľské rozhranie (https server na porte 8443) a implementuje Amazon EC2 API. V jednej inštalácii UEC môže byť len jeden Správca mraku. Táto služba je poskytovaná Ubuntu balíkom eucalyptus-cloud.

  • Klaster (Cluster) - Kolekcia uzlov priradených k Správcovi mraku. V jednej inštalácii UEC môže byť viac ako jeden klaster. Klastre sú niekedy fyzicky oddelenými množinami uzlov. (napr. poschodie1, poschode2, poschodie2).

  • Správca klastra (Cluster Controller - CC) - Súčasť systému Eucalyptus, ktorá spravuje kolekciu zdrojov, ktoré poskytujú uzly. Táto služba je poskytovaná Ubuntu balíkom eucalyptus-cc.

  • EBS (Elastic Block Storage) - Úložisko s elastickými blokmi.

  • EC2 (Elastic Compute Cloud) - Elastický výpočtový mrak. Verejná služba výpočtových mrakov (cloud computing) poskytovaná spoločnosťou Amazon, ktorá je platená podľa hodín alebo podľa gigabajtov.

  • EKI (Eucalyptus Kernel Image) - Obraz jadra systému Eucalyptus.

  • EMI (Eucalyptus Machine Image) - Obraz počítača systému Ecalyptus.

  • ERI (Eucalyptus Ramdisk Image) - Obraz ramdisku systému Eucalyptus.

  • Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) - Elastický nástroj výpočtovej architektúry na pripojenie vašich programov do užitočných systémov. Je to projekt s otvoreným zdrojom vyvinutý na Kalifornskej univerzite v Santa Barbare. Teraz je podporovaný spoločnosťou Eucalyptus Systems (partner spoločnosti Canonical).

  • Rozhranie - Fyzický počítač, ktorý hostí jednu (alebo viac) súčastí systému Eucalyptus (správcu mraku, úložiska, klastra a walrus).

  • Uzol - Uzol je fyzický počítač, na ktorom sa dá spustiť virtuálny počítač, bežiaci cez správcu uzla. V Ubuntu to vlastne znamená, že CPU má rozšírenia pre VT a môže spúšťať hypervízor KVM.

  • Správca uzla (Node Controller - NC) - Súčasť systému Eucalyptus, ktorá spúšťa hostiteľské virtuálne počítače, ktoré tvoria mrak. Táto služba je poskytovaná Ubuntu balíkom eucalyptus-nc.

  • S3 (Simple Storage Service) - Jednoduchá služba úložiska. Riešenie trvácneho úložiska určeného pre EC2 poskytovaného spoločnosťou Amazon, ktoré sa platí za gigabajt.

  • Správca úložiska (Storage Controller - SC) - Súčasť systému Eucalyptus, ktorá spravuje službu úložiska s dynamickými blokmi (EBS). Každý 'klaster' v inštalácii Eucalyptus môže mať svojho vlastného Správcu úložiska. Táto súčasť je poskytovaná balíkom 'eucalyptus-sc'.

  • UEC (Ubuntu Enterprise Cloud) - Podnikový mrak od Ubuntu. Riešenie výpočtového mraku (cloud computing) od vývojárov Ubuntu, ktoré je založené na systéme Eucalyptus.

  • VM - Virtuálny počítať (Virtual Machine).

  • VT - Virtualizačná technológia. Doplnková funkcia niektorých moderných procesorov, umožňujúca urýchľované hosťovanie virtuálnych počítačov.

  • Walrus - Súčasť systému Eucalyptus, ktorá implementuje aplikačné rozhranie S3 API od spoločnosti Amazon, ktoré sa využíva na uchovávanie obrazov virtuálnych počítačov a používateľského úložiska, ktoré využíva abstrakcie S3 bucket put/get.

watch -n5 euca-describe-instances

Eucalyptus - starý návod

Prehľad

Eucalyptus je infraštruktúra na báze otvoreného softvéru implementujúca "cloud computing" na vlastné klastre (zhluk počítačov). Eucalyptus umožňuje vytvorenie vlastného prostredia pre cloud computing, kvôli maximalizácii výpočtových zdrojov a kvôli poskytnutiu prostredia cloud computingu pre používateľov.

Táto časť obsahuje návod ako nastaviť prostredie cloud computingu pomocou systémov Eucalyptus a KVM. Viac informácií o KVM sa nachádza v časti libvirt.

Prostredie cloud computingu obsahuje tri súčasti, ktoré sú zvyčajne nainštalované najmenej na dvoch rôznych počítačoch (v tomto návode ich budeme nazývať 'obslužné rozhranie' a 'uzol'):

  • Jedno obslužné rozhranie: hostí jeden radič cloudu, webové konfiguračné rozhranie založené na jazyku Java, a radič klastra, ktorý určuje kde sa sa nachádzajú virtuálne počítače a riadi sieťovú komunikáciu medzi nimi.

  • Jeden alebo viac výpočtových uzlov: obsahuje ovládač uzla ako súčasti systému Eucalyptus, ktorý počítaču umožňuje byť súčasťou distribuovaného systému prostredníctvom virtuálneho počítača.

V predvolenom stave sa používa režim jednoduchého systémového sieťového pripojenia. Táto metóda sieťového pripojenia umožňuje virtuálnym počítačom získať IP adresu z lokálnej siete LAN, za predpokladu, že DHCP server je v našej sieti správne nakonfigurovaný LAN a poskytuje dynamické IP adresy virtuálnym počítačom, ktoré o to požiadajú. Každý uzol bude nakonfigurovaný pomocou premosteného sieťového pripojenia. Viac informácií sa nachádza v časti “Premostenie”.

Konfigurácia

Najskôr, na počítači, ktorý bude vo funkcii obslužného rozhrania nainštalujeme príslušné balíky. V príkazovom riadku obslužného rozhrania zadáme:

sudo apt-get install eucalyptus-cloud eucalyptus-cc

Potom na každom počítači, ktorý bude slúžiť ako výpočtový uzol nainštalujeme balík ovládača. V príkazovom riadku výpočtového uzla zadáme:

sudo apt-get install eucalyptus-nc

Akonáhle je inštalácia dokončená, čo môže chvíľu trvať, do prehliadača zadáme adresu https://front-end:8443 a prihlásime sa do administrátorského rozhrania pomocou predvoleného používateľského mena a hesla admina. Po prihlásení nás systém vyzve aby sme si zmenili heslo, nastavili emailovú adresu pre používateľa admin, a nastavili URL úložiska.

Vo webovom rozhraní na karte "Configuration", pridáme klaster v časti pod nadpisom "Clusters" (v našom prípade bude radič klastera totožný s radičom cloudu, preto ako stanicu klastra zadáme 'localhost'). Po vyplnení formulára klikneme na tlačidlo "Add Cluster".

Teraz prejdeme späť na počítač obslužného rozhrania, a pridáme uzly do klastra:

sudo euca_conf -addnode menna_adresa_uzla

Následne na to, sa zobrazí výzva na prihlásenie k uzlu. Nainštalujeme balík eucalyptus-nc, pridáme ssh kľúč používateľa systému eucalyptus do súboru authorized_keys na počítači ktorý slúži ako uzol a potvrdíme vierohodnosť obtlačku OpenSSH RSA kľúča. Nakoniec príkaz dokončí synchronizáciu kľúčov súčastí systému eucalyptus a registrácia uzla je hotová.

Na počítači, ktorý bude slúžiť ako uzol, je potrebné otvoriť konfiguračný súbor /etc/eucalyptus/eucalyptus.conf a  nastaviť premosťujúce rozhranie (predpokladáme, že rozhranie má názov 'br0'):

VNET_INTERFACE="br0"
...
VNET_BRIDGE="br0"

Nakoniec reštartujeme eucalyptus-nc:

sudo /etc/init.d/eucalyptus-nc restart
[Note]

Nezabudnite nahradiť nodecontroller, node01 a node02 skutočnými mennými adresami hosťovských staníc.

Eucalyptus je teraz pripravený hosťovať obrazy v cloude.

Zdroje

  • Viac informácii sa nachádza na stránke Eucalyptus website.

  • Informácie o načítaní inštancií nájdete na stránke Eucalyptus Wiki.

  • Pomoc môžete nájsť aj na IRC kanáloch #ubuntu-virt, #eucalyptus a #ubuntu-server na Freenode.

OpenNebula

OpenNebula umožňuje dynamicky umiestňovať a premiestňovať virtuálne počítače medzi viacerými fyzickými zdrojmi. Toto umožňuje poskytovať virtuálne počítače z ktoréhokoľvek dostupného miesta.

Táto časť obsahuje podrobnosti o konfigurácii OpenNebula klastra s použitím troch počítačov: stanice s obslužným rozhraním a dvoch výpočtových uzlov, na ktorých budú spustené virtuálne počítače. Na výpočtových uzloch je tiež potrebné nakonfigurovať premostenie, aby sa k virtuálnym počítačom dalo pristupovať z lokálnej siete. Podrobnosti nájdete v časti “Premostenie”.

Inštalácia

Najskôr v termináli na počítači, ktorý bude slúžiť ako obslužné rozhranie, zadáme:

sudo apt-get install opennebula

Na všetkých počítačoch, ktoré budú slúžiť ako výpočtové uzly, nainštalujeme:

sudo apt-get install opennebula-node

Ako ďalšie skopírujeme SSH kľúče, kvôli ktorým používateľ oneadmin bude potrebovať heslo. Na každom počítači spustíme:

sudo passwd oneadmin

Potom skopírujeme SSH kľúč používateľa oneadmin do výpočtových uzlov a do súboru authorized_keys na obslužnom rozhraní:

sudo scp /var/lib/one/.ssh/id_rsa.pub oneadmin@uzol01:/var/lib/one/.ssh/authorized_keys
sudo scp /var/lib/one/.ssh/id_rsa.pub oneadmin@uzol02:/var/lib/one/.ssh/authorized_keys
sudo sh -c "cat /var/lib/one/.ssh/id_rsa.pub >> /var/lib/one/.ssh/authorized_keys"

SSH kľúče výpočtových uzlov je potrebné pridať do súboru /etc/ssh/ssh_known_hosts na obslužnom rozhraní. Spravíme to tak, že sa cez ssh pripojíme ku každému výpočtovému uzlu pod iným používateľským menom ako je oneadmin. Potom ukončite reláciu SSH a spustením nasledujúcich príkazov nakopírujeme SSH kľúče z ~/.ssh/known_hosts do /etc/ssh/ssh_known_hosts:

sudo sh -c "ssh-keygen -f .ssh/known_hosts -F uzol01 1>> /etc/ssh/ssh_known_hosts"
sudo sh -c "ssh-keygen -f .ssh/known_hosts -F uzol02 1>> /etc/ssh/ssh_known_hosts"
[Note]

Nahraďte uzol01 a uzol02 príslušnými mennými adresami počítačov.

Toto umožní používateľovi oneadmin používať príkaz scp, pomocou ktorého sa dajú rozmiestňovať obrazy na výpočtové uzly bez hesla alebo iného ručného vstupu.

Na počítači s obslužným rozhraním vytvoríme priečinok na ukladanie obrazov virtuálnych počítačov a používateľovi oneadmin nastavíme oprávnenie na prístup do tohto priečinka:

sudo mkdir /var/lib/one/images
sudo chown oneadmin /var/lib/one/images/

Nakoniec skopírujeme súbor s diskom virtuálneho počítača do priečinka /var/lib/one/images. Virtuálny počítač so systémom Ubuntu môžeme vytvoriť pomocou nástroja vmbuilder, podrobnosti nájdete v časti JeOS a vmbuilder.

Konfigurácia

OpenNebula klaster je teraz pripravený na konfiguráciu a na pridanie virtuálnych počítačov.

V príkazovom riadku zadáme:

onehost create uzol01 im_kvm vmm_kvm tm_ssh
onehost create uzol02 im_kvm vmm_kvm tm_ssh

Potom vytvoríme súbor so šablónou virtuálnej siete s názvom vnet01.template:

NAME            = "LAN"
TYPE = RANGED
BRIDGE = br0
NETWORK_SIZE = C
NETWORK_ADDRESS = 192.168.0.0
[Note]

Uistite sa, či ste zmenili 192.168.0.0 na adresu vašej siete.

Pomocou nástroja onevnet pridáme virtuálnu sieť do systému OpenNebula:

onevnet create vnet01.template

Teraz vytvoríme súbor so šablónou virtuálneho počítača s názvom vm01.template:

NAME   = vm01
CPU = 0.5
MEMORY = 512

OS = [ BOOT = hd ]

DISK = [
source = "/var/lib/one/images/vm01.qcow2",
target = "hda",
readonly = "no" ]

NIC = [ NETWORK="LAN" ]

GRAPHICS = [type="vnc",listen="127.0.0.1",port="-1"]

Spustíme virtuálny počítač pomocou nástroja onevm:

onevm submit vm01.template

Pomocou príkazu onevm list môžeme zobraziť informácie o virtuálnych počítačoch. Ak použijeme voľbu onevm show vm01, zobrazí sa nám ešte detailnejšia špecifikácia virtuálneho počítača.

Zdroje