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

Alapvető paraméterek

Mivel ez a példa a KVM-re és az Ubuntu 10.04 LTS (Lucid Lynx) 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 lucid --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)

  • --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 lucid --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100
A libvirt sablon módosítása híd használatához

Mivel az eszközt valószínűleg távoli gépeknek is el kell majd érniük, a libvirtet úgy kell beállítani, hogy az eszköz a hálózatkezeléshez hidat használjon. Ehhez a vmbuilder sablon mechanizmusát kell használni, az alapértelmezett módosítására.

A munkakönyvtárban létre kell hozni a sablonhierarchiát, és át kell másolni az alapértelmezett sablont:

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

Ezután szerkeszthető a VMBuilder/plugins/libvirt/templates/libvirtxml.tmpl, és a következő rész módosítható:

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

Erre:

          <interface type='bridge'>
            <source bridge='br0'/>
          </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 lucid --flavour virtual --arch i386 \ -o --libvirt qemu:///system --ip 192.168.0.100 --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 lucid --flavour virtual --arch i386 \ -o --libvirt qemu:///system --ip 192.168.0.100 --part vmbuilder.partition \ --userfelhasználó --name felhasználó --pass alapértelmezett

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
OpenSSH

Egy másik kényelmes segédprogram, amelyet érdemes az eszközre telepíteni az OpenSSH, mivel lehetővé teszi a távoli rendszergazdai hozzáférést az eszközhöz. Azonban előre telepített OpenSSH-val nyilvánosan elérhetővé tenni bármilyen eszközt hatalmas biztonsági kockázat, mivel ezek a kiszolgálók ugyanazt a titkos kulcsot fogják használni, így pillanatok alatt feltörhetők. A felhasználói jelszóhoz hasonlóan ebben az esetben is egy parancsfájlt kell használni, amely a felhasználó első bejelentkezésekor telepíti az OpenSSH-t, így az egyes eszközökhöz előállított kulcsok egyediek lesznek. Ehhez egy --firstboot parancsfájlt kell megadni, mivel nem igényel felhasználói közreműködést.

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]

Az itt megadott tükör címe kerül felhasználásra az újonnan létrehozott vendég /etc/apt/sources.list fájljában, így itt a vendég által feloldható címet érdemes használni, vagy betervezni a cím későbbi törlését, például egy --firstboot parancsfájlban.

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

Telepítés RAM lemezre

Könnyű elképzelni, hogy a memóriába írás SOKKAL gyorsabb a lemezre írásnál. Ha rendelkezik elég szabad memóriával, a vmbuilder beállítása RAM lemezre írásra jelentősen gyorsítja a folyamatot. Ezt a --tmpfs kapcsolóval lehet megadni:

--tmpfs OPTS  tmpfs használata munkakönyvtárként a méret megadásával, vagy
              a „-” megadásakor a tmpfs alapértelmezését használja (suid,dev,size=1G).

Emiatt a --tmpfs - hozzáadása jó választás, ha rendelkezésre áll legalább 1 GB szabad memória.

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.

A telepítés befejezése

Első indítás

Ahogyan arról korábban szó volt, a gép első indulásakor kell telepíteni az openssh-server csomagot, hogy a hozzá generált kulcs minden géphez egyedi legyen. Ehhez egy boot.sh nevű parancsfájlt kell írni, a következőképpen:

# Ez a parancsfájl a virtuális gép első indulásakor fog lefutni.
# Rendszergazdai jogokkal fut.

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

Ezután a parancssort a --firstboot boot.sh kapcsolóval kell bővíteni.

Első bejelentkezés

A Mysql és a Limesurvey telepítésekor felhasználói együttműködésre van szükség, ezek beállítására egy login.sh nevű bejelentkezési parancsfájl használatával a felhasználó első bejelentkezésekor kerül sor. A parancsfájllal a felhasználó megadhatja a:

  • Saját jelszavát

  • A használni kívánt billentyűzetkiosztást és más területi beállításokat

A login.sh a következőképp fog kinézni:

# Ez a parancsfájl a felhasználó első bejelentkezésekor fut le.

echo "Az eszköz beállítása hamarosan befejeződik."
echo "Ehhez meg kell válaszolnia néhány kérdést, "
echo "kezdve a felhasználói jelszavának megváltoztatásával."

passwd

# a billentyűzet-kiosztás megváltoztatása
sudo dpkg-reconfigure console-setup

# a mysql kiszolgáló root jelszavának megadása
sudo dpkg-reconfigure mysql-server-5.0

#a limesurvey telepítése
sudo apt-get install -qqy --force-yes limesurvey

echo "Az eszköz beállítva. A használatához nyissa meg a böngészőben a"
echo "http://kiszolgáló-IP/limesurvey/admin címet"

Ezután hozzá kell adni a --firstlogin login.sh kapcsolót a parancssorhoz.

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

Információforrások

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