Ebben a hónapban bejelentettünk egy nagyon izgalmas partnerséget a Canonical-lal, az Ubuntu készítőivel. Mindenekelőtt a partnerség fő eleme a teljes CloudInit támogatás bevezetése a CloudSigma felhő és az Ubuntu között.
Bevezetés a CloudInit használatába
Ha nem ismeri a CloudInitet, ez az iparági szabvány a felhőszerverek inicializálására (bootstrapping). Pontosabban, ha egy egyszerű DSL segítségével könnyen végrehajthat feladatokat az első rendszerindításkor. Érdemes azt is megjegyezni, hogy a CloudInit nem korlátozódik az Ubuntura. Ma már a legtöbb modern Linux disztribúcióban megtalálható a CloudInit támogatás (bár a támogatott felhők köre változhat).
Mielőtt nekilátnánk a CloudInit használatának, fontos megérteni, hogyan illeszkedik a CloudInit a provizionálási (telepítési) ökoszisztémába. Bár a CloudInit önálló provizionálási rendszerként is futtatható, sokkal gyakoribb, hogy egy másik provizionáló rendszerrel, például az Ansible, Chef, Puppet vagy Salt eszközökkel együtt használják. Ebben az esetben a CloudInitet egyszerűen arra használja, hogy az új szervert olyan állapotba hozza, ahonnan a provizionáló rendszer átveheti az irányítást. Személy szerint én gyakran használom a CloudInitet az Ansible-lel kombinálva.
A CloudInit használata a CloudSigma-n
A CloudInit használata a CloudSigma-n rendkívül egyszerű.
A CloudInit Ubuntu 14.04 szerveren történő használatához kövesse az alábbi lépéseket:
-
- Klónozza a meghajtót “Ubuntu 14.04 Cloud Image” az áruházból (jelenleg ez az egyetlen teljesen támogatott meghajtó CloudInit-tel). Ügyeljen arra, hogy a klónozott meghajtót a kívánt méretűre méretezze át, és az az első rendszerindításkor automatikusan kiterjeszti a fájlrendszert.
- Hozzon létre egy új szervert.
- A szerver létrehozása után egy CloudInit gombot fog látni a szerver állapota alatt.

-
- Ha rákattint erre a gombra, a következő párbeszédpanel jelenik meg.

- Egyszerűen illessze be ide a CloudInit adatait, majd nyomja meg az ‘Activate’ gombot.
- Elindíthatja a szervert, és a szkript lefut az első rendszerindításkor.
SSH-kulcs(ok) telepítése CloudInit segítségével
Most, hogy már tudja, hogyan kell használni a CloudInitet a felhőnkben, kamatoztassuk ezt az újonnan szerzett tudást két SSH-kulcs telepítésével. A két fiktív nyilvános SSH-kulcs, amelyet használni fogunk: ‘ssh-rsa AAA[…] user1@host‘ és ‘ssh-rsa AAA[…] user2@host‘. (Az SSH-kulcsok generálásáról bővebben ezen az oldalon olvashat a Githubon.)
Az Ubuntu Cloud Image-ek esetében az alapértelmezett felhasználónév az ‘ubuntu’. Ezért a kulcsok ebbe a felhasználói fiókba lesznek telepítve.
Az ehhez tartozó CloudInit konfiguráció a következőképpen nézne ki:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
[/ruby]
Kérjük, vegye figyelembe, hogy a szóközök számítanak. Két szóköz van a ‘-‘ előtt. Ha csak egyet tesz, előfordulhat, hogy a szerver nem tudja beolvasni.
Miután elmentette a CloudInit konfigurációt és elindította a szervert, képesnek kell lennie SSH-n keresztül bejelentkezni a szerverre az ‘ubuntu’ felhasználóval:
[bash light="true"]
$ ssh ubuntu@aaa.bbb.ccc.ddd
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Sun Oct 19 21:51:54 UTC 2014
System load: 0.0 Users logged in: 0
Usage of /: 77.4% of 39.34GB IP address for eth0: aaa.bbb.ccc.ddd
Memory usage: 26%
Swap usage: 0%
Processes: 113
Graph this data and manage this system at:
https://landscape.canonical.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
[...]
ubuntu@myserver:~$
[/bash]
Rendszerfrissítések telepítése CloudInit segítségével
Egy másik nagyon hasznos dolog, amit könnyen megvalósíthat a CloudInit segítségével, a rendszerfrissítések futtatása az első rendszerindításkor. Bár a lemezképeinket gyakran frissítjük, mégis jó ötlet további óvintézkedéseket tenni annak érdekében, hogy rendszerei naprakészek legyenek.
A rendszerfrissítések első rendszerindításkor történő telepítéséhez adja hozzá a következőket:
[ruby]
#cloud-config
apt_update: true
apt_upgrade: true
[/ruby]
Azt is észreveheti, hogy létezik egy hasonló, ‘package_update’ nevű opció, amely az ‘apt_update’ disztribúciófüggetlen aliasa Ubuntun.
Emellett az ‘apt_update’ alapértelmezés szerint true-ra lesz állítva, ha a ‘packages’ (lentebb) be van állítva, de a fenti részben is hozzáadtam, hogy egyértelműbb legyen.
Csomagok telepítése CloudInit segítségével
A rendszerek indításának (bootstrapping) egyik alapvető része, hogy képesek legyünk csomagokat telepíteni a rendszerindításkor. Szerencsére a CloudInit ezt is megkönnyíti. Mindössze annyit kell tennünk, hogy megadjuk a telepíteni kívánt csomagok listáját a ‘packages’ alatt. Ha például a ‘python-pip’, ‘fail2ban’ és ‘vim’ csomagokat szeretnénk telepíteni, az a következőképpen nézne ki:
[ruby]
#cloud-config
packages:
- python-pip
- fail2ban
- vim
[/ruby]
Ismételten kérjük, vegye figyelembe, hogy a szóközök számítanak. Két szóköz van a ‘-‘ előtt.
A gépnév (hostname) beállítása CloudInit használatával
Amikor új szervert hoz létre, érdemes lehet beállítani a gépnevét is.
[ruby]
#cloud-config
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
[/ruby]
Parancsok futtatása az első rendszerindításkor CloudInit segítségével
Feltételezve, hogy valami összetettebb dolgot csinál a szervereivel, valószínű, hogy van olyan parancs, amelyet az első rendszerindításkor kell futtatnia.
Itt jön képbe a ‘runcmd’ és a ‘bootcmd’. Mindkettő lehetővé teszi parancsok futtatását az első rendszerindításkor. A különbség az, hogy a ‘bootcmd’ korábban fut le a rendszerindítási folyamatban, mint a ‘runcmd’.
Ezen parancsok bármelyikének használatához adja hozzá a következőket a CloudInit konfigurációjához:
[ruby]
#cloud-config
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
A CloudInit használata konfigurációkezelővel
Végezetül, ha Ön tapasztaltabb felhőfelhasználó, valószínűleg valamilyen konfigurációkezelőt használ. Szerencsére a CloudInit erre is fel van készítve. A sok változó miatt azonban ez egy meglehetősen összetett téma.
Íme néhány példa, amely segíthet elindulni a helyes irányba:
Hogyan kapcsoljunk össze több elemet
Azok számára, akik nem ismerik a YAML-stílusú fájlokat, talán nem egyértelmű, hogyan lehet több CloudInit elemet láncolni. Ez azonban pofonegyszerű. Az első sorban a következőre van szükség: ‘#cloud-config‘. Ezután egyszerűen hozzáadhatja a konfigurációját.
Például az összes fenti példát egyetlen konfigurációba gyúrva a következőképpen nézne ki:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
apt_update: true
apt_upgrade: true
packages:
- python-pip
- fail2ban
- vim
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
További források
Ebben a cikkben valóban csak a felszínét kapargattuk annak, amire a CloudInit képes. Rengeteg más dolgot is megtehet a tanulás érdekében, mint például felhasználók és csoportok létrehozása, fájlok lemezre írása és URL-ek meghívása a befejezéskor (más rendszerek értesítéséhez).
Ha többet szeretne megtudni a CloudInitről, a következő forrásokat ajánlom:
- Hivatalos CloudInit dokumentáció
- Az Ubuntu CloudInit útmutatója
- A RedHat CloudInit dokumentációja
- Az Ubuntu CloudInit példatára
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.