Vissza a bloghoz

Bevezetés a szerver-provizionálásba a CloudInit segítségével

Bevezetés a szerver-provizionálásba a CloudInit segítségével

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.

CloudInit

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

CloudInit_activate

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

author

Viktor Petersson

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.