JeOS és vmbuilder

Bevezetés

Mi az a JeOS

Az JeOS az Ubuntu kiszolgáló operációs rendszer egy hatékony változata, amelyet kifejezetten virtuális eszközökhöz állítottak össze. Nem érhető el letölthető ISO-ként, csak:

  • A kiszolgáló változat telepítésekor (az első képernyőn az F4 megnyomása után kiválaszthatja a „Minimális telepítés” lehetőséget, ez azonos a JeOS csomagkészletével).

  • Felépíthető az Ubuntu vmbuilder eszközével, amelyet itt ismertetünk.

A JeOS az Ubuntu kiszolgáló változatának specializált telepítése, amely a virtualizált környezetben való futáshoz minimálisan szükséges elemeket tartalmazó kernelt használ.

Az Ubuntu JeOS a VMware legújabb virtualizációs termékeinek kulcsfontosságú teljesítménynövelő technikáinak kihasználására készült. A csökkentett méret és az optimalizált teljesítmény kombinációja biztosítja, hogy az Ubuntu JeOS változata a kiszolgáló-erőforrások különösen hatékony felhasználását nyújtsa nagy virtuális telepítéseken.

A szükségtelen meghajtóprogramok nélkül, és csak a minimálisan szükséges csomagokkal, a független szoftvergyártók teljesen az igényeikre szabhatják támogató operációs rendszerüket. Nyugodtak lehetnek afelől, hogy a frissítések, érkezzenek biztonsági vagy szolgáltatásbővítési okból, az adott környezetben szükséges minimumra korlátozódnak. Cserébe a JeOS alapokra épített virtuális eszközöket telepítő felhasználóknak kevesebb frissítést kell kezelniük, emiatt a teljes kiszolgálóhoz képest csökken a rendszerek karbantartási igénye.

Mi az a vmbuilder

A vmbuilder szükségtelenné teszi a JeOS ISO letöltését. A vmbuilder letölti a szükséges csomagokat, és percek alatt felépíti az igényeinek megfelelő virtuális gépet. A vmbuilder egy parancsfájl, amely automatizálja a használatra kész linuxos virtuális gép elkészítésének folyamatát. A jelenleg támogatott hypervisorok a KVM és a Xen.

Parancssori kapcsolók segítségével további csomagokat vehet fel vagy meglévőeket távolíthat el, kiválaszthatja a használni kívánt Ubuntu verziót vagy tükröt stb. Sok memóriával rendelkező új gépen, a /dev/shm alatti tmpdir vagy tmpfs, valamint helyi tükör használatával akár egy perc alatt is összeállíthat egy virtuális gépet.

Az ubuntu-vm-builder parancsfájl minden hírverés nélkül az Ubuntu 8.04 LTS-ben mutatkozott be először, mint a fejlesztőket segítő gányolás, amely megkönnyíti a kód tesztelését virtuális gépben a rendszeres újrakezdés nélkül. Ahogy egyes ubuntus rendszergazdák észrevették a jelenlétét, néhányan fejleszteni kezdték, és olyan sok helyzet kezelésére tették alkalmassá, hogy a fejlesztője Pythonban újraírta az Intrepidhez, néhány új fejlesztési céllal:

  • Más disztribúciók számára is használható legyen.

  • Bővítmények kezeljék a virtualizációs interakciókat, így más virtuális környezetek támogatása könnyen hozzáadható.

  • A parancssoros felület mellett egy könnyen karbantartható webes felület is rendelkezésre álljon.

Az általános elvek és parancsok azonban ugyanazok maradtak.

Kiinduló telepítés

Feltételezzük, hogy a használt gépre helyileg telepítette és beállította a libvirt és KVM szoftvereket. Ezzel kapcsolatos részletekért lásd:

Feltételezzük még, hogy ismeri egy szöveges alapú szövegszerkesztő, például a nano vagy a vi használatát. Ha még nem használta ezeket, akkor nézze meg az ismertetésüket a PowerUsersTextEditors wiki oldalon. Ezt az ismertetőt KVM-alapokra készítettük, de az alapelv más virtualizációs technológiák esetén is ugyanez.

A vmbuilder telepítése

Telepítse a python-vm-builder csomagot. Adja ki a következő parancsot:

sudo apt-get install python-vm-builder
[Megjegyzés]

Ha a Hardy kiadást használja, a leírás zömét a csomag ubuntu-vm-builder nevű régebbi verzióján is végrehajthatja, az eszköz szintaxisa alig változott.

A virtuális gép megadása

A virtuális gép megadása az Ubuntu vmbuilder segítségével nagyon egyszerű, de az alábbiakat figyelembe kell venni:

  • Ha a virtuális eszköz továbbadására készül, ne feltételezze, hogy a végfelhasználó tudni fogja, hogyan igazíthatja a lemezméretet az igényeihez, emiatt vagy készítsen nagy virtuális lemezt, vagy dokumentálja alaposan a hely megnövelésének módját. Jó megközelítés lehet az adatok külső tárolón történő elhelyezése is.

  • Mivel memóriát sokkal egyszerűbb foglalni a virtuális géphez, a memória méretét az eszköz működéséhez biztonságos minimumra kell állítani.

A vmbuilder parancsnak két fő paramétere van: a virtualizációs technológia (hypervisor) és a cél disztribúció. A további paraméterekből igen sok van és a következő parancs kiadásával kérhetők le:

vmbuilder kvm ubuntu --help

Alapvető paraméterek

Mivel ez a példa a KVM-re és az Ubuntu 10.10(Maverick Meerkat) kiadására épül, valamint ugyanez a virtuális gép többször is újjá lesz építve, a vmbuilder hívásához a következő paramétereket kell használni:

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

A --suite kapcsoló megadja az Ubuntu kiadást, a --flavour megadja, hogy a virtuális kernelt kell használni (ezt kell JeOS lemezkép készítéséhez használni), a --arch megadja, hogy 32 bites gépet használ, a -o felülírja a virtuális gép korábbi változatát, a --libvirt hatására pedig a helyi virtualizációs környezet felveszi a virtuális gépet az elérhető gépek listájába.

Megjegyzés:

  • A vmbuildert az általa végrehajtott műveletek természetéből fakadóan rendszergazdai jogosultságokkal kell futtatni, emiatt szükséges a sudo.

  • Ha a virtuális gépnek 3 GB-nál több memóriát kell használnia, akkor készítsen 64 bites gépet (--arch amd64).

  • Az Ubuntu 8.10-ig a virtuális kernel csak 32 bitre készült el, így ha Hardy alatt szeretne 64 bites gépet készíteni, akkor a --flavour server kapcsolót kell megadnia.

A JeOS telepítési paraméterei

A JeOS hálózatkezelése
Rögzített IP-cím társítása

Mivel a virtuális eszközt számos, nagyon különböző hálózatba lehet telepíteni, nehéz megállapítani a tényleges hálózat pontos típusát. A beállítás megkönnyítése érdekében hasznos lehet a hálózati hardverek szállítóinak megközelítését alkalmazni, vagyis az eszközhöz kiinduló, egy privát osztályú hálózatba tartozó rögzített IP-címet rendelni, amelyet majd a dokumentációban ismertet. Erre általában a 192.168.0.0/255 tartománybeli címek megfelelőek.

Ehhez a következő paramétereket használhatja:

  • --ip CÍM: IP-cím pontozott formátumban (alapértelmezésben dhcp, ha nincs megadva)

  • --hostname NAME: Set NAME as the hostname of the guest.

  • --mask ÉRTÉK: IP-maszk pontozott formátumban (alapértelmezésben: 255.255.255.0)

  • --net ÉRTÉK: IP-hálózat címe (alapértelmezésben: X.X.X.0)

  • --bcast ÉRTÉK: IP broadcast (alapértelmezett: X.X.X.255)

  • --gw CÍM: Átjáró címe (alapértelmezett: X.X.X.1)

  • --dns CÍM: Névkiszolgáló címe (alapértelmezett: X.X.X.1)

Egyelőre feltételezzük, hogy az alapértelmezett értékek megfelelőek, így az eredményül kapott hívás a következő lesz:

sudo vmbuilder kvm ubuntu --suite maverick --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm 
Híd

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 add the --bridge option to the command:

sudo vmbuilder kvm ubuntu --suite maverick --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --bridge br0
[Megjegyzés]

You will need to have previously setup a bridge interface, see „Híd” for more information. Also, if the interface name is different change br0 to the actual bridge interface.

Particionálás

A virtuális eszköz particionálásakor figyelembe kell venni, hogy az mire lesz használva. Mivel a legtöbb eszköz az adatokat külön tárolja, az önálló /var használatának van értelme.

Ennek megadásához a vmbuilder a --part kapcsolót biztosítja:

--part ÚTVONAL
  Lehetővé teszi partíciós tábla megadását az ÚTVONALON lévő partíciós fájlban.
  A fájl minden sorának a következőket kell megadnia:
  (elsőként a root partíciót):
      csatolási-pont méret
  ahol a méret megabájtban értendő. Legfeljebb 4 virtuális lemeze lehet, az új lemez a
  „---” tartalmú sortól kezdődik. Például:
      root 1000
      /opt 1000
      swap 256
      ---
      /var 2000
      /log 1500

Ebben az esetben egy vmbuilder.partition nevű fájlt kell létrehozni, a következő tartalommal:

root 8000
swap 4000
---
/var 20000
[Megjegyzés]

Ne feledje, hogy mivel virtuális lemezképekről van szó, az itt feltüntetett tényleges méretek a kötetek maximális méretei.

A parancssor most így néz ki:

sudo vmbuilder kvm ubuntu --suite maverick --flavour virtual --arch i386 \ 
         -o --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --part vmbuilder.partition
[Megjegyzés]

A parancsban használt „\” lehetővé teszi a hosszú parancsok következő sorba törését.

Felhasználó és jelszó

A virtuális eszköz beállításához meg kell adni az alapértelmezett felhasználót és jelszót, amely elég általános ahhoz, hogy a saját dokumentációjába bekerülhessen. A dokumentumban később ismertetésre kerül egy olyan parancsfájl megadása, amely a felhasználó az eszközre történő első tényleges bejelentkezésekor lefut, és többek között a jelszó megváltoztatását kéri, így javítva a biztonságot. Ez a példa a „felhasználó” felhasználónevet és a „alapértelmezett” jelszót használja.

Ehhez a következő paraméterek szükségesek:

  • --user FELHASZNÁLÓNÉV: A felvenni kívánt felhasználó neve. Alapértelmezés: ubuntu.

  • --name TELJESNÉV: A felvenni kívánt felhasználó teljes neve. Alapértelmezés: Ubuntu.

  • --pass JELSZÓ: A felvenni kívánt felhasználó jelszava. Alapértelmezés: ubuntu.

A kapott parancssor:

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

Szükséges csomagok telepítése

Ez a példa egy olyan csomag (Limesurvey) telepítését mutatja be, amely MySQL adatbázist használ, és webes felülettel rendelkezik. Emiatt a következők telepítése szükséges az operációs rendszerre:

  • Apache

  • PHP

  • MySQL

  • OpenSSH kiszolgáló

  • Limesurvey (csomagban elérhető példaprogram)

Ez a vmbuilder --addpkg kapcsolójának többszöri megadásával végezhető el:

--addpkg CSOMAG
  A CSOMAG telepítése a vendégre (többször is megadható)

A vmbuilder működési módja miatt nem támogatottak azok a csomagok, amelyeknek a telepítés utáni szakaszban kérdéseket kell feltenniük a felhasználónak. Ezeket a csomagokat akkor kell telepíteni, amikor lehetőség van a kérdések megválaszolására. Ez a Limesurvey esetén is így van, emiatt a felhasználó bejelentkezésekor kell telepíteni.

Az olyan csomagok telepíthetők, amelyek egyszerű debconf kérdéseket tesznek fel, mint például a jelszó beállítását kérő mysql-server, de a felhasználó első bejelentkezésekor újra kell konfigurálni.

Ha egyes telepítendő csomagok nem érhetők el a main tárolóból, akkor a további tárolókat a --comp és --ppa kapcsolókkal kell engedélyezni:

--components KOMP1,KOMP2,...,KOMPN
           Felvenni kívánt disztribúciókomponensek vesszőkkel elválasztott listája (például main,universe). Az alapértelmezett a 
           „main”
--ppa=PPA  A PPA hozzáadása a virtuális gép sources.list fájljához.

A Limesurvey jelenleg nem része az archívumnak, így a PPA címét kell megadni, hogy felvételre kerüljön a virtuális gép /etc/apt/source.list fájljába. A parancssor a következőkkel bővül:

--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

Sebességszempontok

Csomag-gyorsítótárazás

Amikor a vmbuilder létrehozza a rendszert, minden csomagot le kell töltenie az egyik hivatalos tárolóból, ami az internetkapcsolat sebességétől, és a tükör terhelésétől függően jelentősen befolyásolhatja a rendszer összeállítási idejét. Ennek csökkentése érdekében ajánlott helyi tárolót létrehozni (az apt-mirror segítségével), vagy az apt-proxy-hoz hasonló gyorsítótárazó proxyt használni. Ez utóbbi lehetőséget sokkal egyszerűbb megvalósítani, és kevesebb lemezterületet is igényel, ezért ezt mutatjuk be. A telepítéséhez adja ki a következő parancsot:

sudo apt-get install apt-proxy

Ezután az üres proxy használatra kész a http://tükörcíme:9999 címen, az ubuntu tároló pedig a /ubuntu alatt található. A vmbuilder a --mirror kapcsoló hatására fogja használatba venni:

--mirror=URL  Az URL címen található Ubuntu tükör használata az alapértelmezett
              helyett (http://archive.ubuntu.com/ubuntu hivatalos
              architektúrákhoz, és http://ports.ubuntu.com/ubuntu-ports
              egyébként)

A parancssor a következővel bővül:

--mirror http://tükörcíme:9999/ubuntu
[Megjegyzés]

The mirror address specified here will also be used in the /etc/apt/sources.list of the newly created guest, so it is useful to specify here an address that can be resolved by the guest or to plan on reseting this address later on.

Helyi tükör telepítése

Nagyobb környezetben hasznos lehet az Ubuntu tárolók helyi tükrének elkészítése. Az apt-mirror csomag biztosítja a tükrözést elvégző parancsfájlt. Minden támogatott kiadáshoz és architektúrához biztosítson 20 GB szabad helyet.

Alapértelmezésben az apt-mirror az /etc/apt/mirror.list beállítófájlt használja. Telepítéskor csak a helyi gép architektúráját replikálja. Ha más architektúrákat is támogatni szeretne a tükrön, egyszerűen kettőzze meg a „deb” kezdetű sorokat, és cserélje a deb kulcsszót a /deb-{arch} kulcsszóra, ahol az arch az i386, amd64 stb egyike lehet. Egy amd64 gépen az i386 archívumok tükrözéséhez a következő szükséges:

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

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

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

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

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

Ne feledje, hogy a forráscsomagok nem kerülnek tükrözésre, mivel ezeket a binárisokhoz képest ritkán használják és sokkal több helyet foglalnak, de egyszerűen felvehetők.

Miután a tükör befejezte a replikálást (ez sokáig tarthat), be kell állítania az Apache-ot a tükör fájljainak (alapértelmezésben a /var/spool/apt-mirror alatt) közzétételére. Az Apache-csal kapcsolatos további információkért lásd a „HTTPD – Apache2 webkiszolgáló” szakaszt.

Az alkalmazás csomagolása

Két lehetőség van:

  • A javasolt módszer a Debian csomag készítése. Mivel ennek bemutatása kívül esik ezen dokumentáció célján, információkért lásd az Ubuntu csomagolási útmutatót. Ebben az esetben hasznos tárolót készíteni a csomaghoz, a frissítések egyszerű elérhetővé tételéhez. Ezzel kapcsolatos információkért lásd a Debian Administration cikkét.

  • Az alkalmazás telepítése saját kezűleg a /opt alá, az FHS irányelvek által javasolt módon.

Ebben az esetben példaként a Limesurvey webalkalmazást használjuk, amelyhez virtuális eszközt biztosítunk. Korábban már volt róla szó, hogy a csomagolt verzió elérhető egy PPA-ban.

Hasznos bővítések

Automatikus frissítések beállítása

Az eszköz rendszeres automatikus frissítéséhez az unattended-upgrades csomagot kell telepíteni, így a parancssor a következővel bővíthető:

--addpkg unattended-upgrades

Mivel az alkalmazás csomagja egy PPA-ban van, a folyamat nem csak a rendszert, de az alkalmazást is frissíteni fogja, ha a PPA-ban lévő verzió frissül.

ACPI események kezelése

A virtuális gépnek küldött újraindítási és leállítási események kezelése érdekében ajánlott az acpid csomag telepítése. Ehhez a következő kapcsoló szükséges:

--addpkg acpid

Végső parancs

Az összes fenti kapcsolót tartalmazó parancs a következő:

sudo vmbuilder kvm ubuntu --suite maverick --flavour virtual --arch i386 -o \ 
         --libvirt qemu:///system --ip 192.168.0.100 --hostname myvm --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 
         

Információforrások

Ha többet szeretne tudni, kérdései vagy javaslatai vannak, keresse meg az Ubuntu kiszolgáló csapatát: