Tento mesiac sme oznámili veľmi vzrušujúce partnerstvo s Canonical, tvorcami Ubuntu. Hlavným prvkom tohto partnerstva je predovšetkým zavedenie plnej podpory CloudInit medzi cloudom CloudSigma a Ubuntu.
Úvod do CloudInit
Ak nie ste oboznámení s CloudInit, ide o priemyselný štandard na bootstrapping cloudových serverov. Pre upresnenie, ak používate jednoduché DSL je možné jednoducho vykonávať úlohy pri prvom spustení. Tiež stojí za to poukázať na to, že CloudInit sa neobmedzuje len na Ubuntu. Dnes nájdete podporu pre CloudInit vo väčšine moderných distribúcií Linuxu (ale podporované cloudy sa budú líšiť).
Predtým, ako začneme s CloudInit, je dôležité pochopiť, kam CloudInit zapadá do ekosystému provisioningu. Hoci je možné spustiť CloudInit ako samostatný systém na provisioning, oveľa bežnejšie je používať ho v spojení s iným systémom na provisioning, ako je Ansible, Chef, Puppet alebo Salt. V takom prípade by ste jednoducho použili CloudInit na uvedenie vášho nového servera do stavu, v ktorom môže provisioningový systém prevziať kontrolu. Osobne často používam CloudInit v kombinácii s Ansible.
Používanie CloudInit na CloudSigma
Používanie CloudInit na CloudSigma je veľmi jednoduché.
Ak chcete použiť CloudInit na serveri Ubuntu 14.04, postupujte nasledovne:
-
- Naklonujte disk “Ubuntu 14.04 Cloud Image” z marketplace (v súčasnosti jediný plne podporovaný disk s CloudInit). Nezabudnite zmeniť veľkosť klonovaného disku na požadovanú veľkosť a pri prvom spustení automaticky rozšíri súborový systém.
- Vytvorte nový server.
- Po vytvorení servera uvidíte pod stavom servera tlačidlo CloudInit.

-
- Po kliknutí na toto tlačidlo sa zobrazí nasledujúci dialóg.

- Sem jednoducho vložte svoje údaje CloudInit a stlačte ‘Aktivovať’.
- Môžete spustiť svoj server a skript sa spustí pri prvom spustení.
Inštalácia SSH kľúčov pomocou CloudInit
Teraz, keď už viete, ako používať CloudInit v našom cloude, poďme tieto novonadobudnuté znalosti využiť na inštaláciu dvoch SSH kľúčov. Dva fiktívne verejné SSH kľúče, ktoré budeme používať, sú ‘ssh-rsa AAA[…] user1@host‘ a ‘ssh-rsa AAA[…] user2@host‘. (Ak sa chcete dozvedieť viac o generovaní SSH kľúčov, pozrite sa na túto stránku na Github.)
V Ubuntu Cloud Images je predvolené používateľské meno ‘ubuntu’. Kľúče sa preto nainštalujú do tohto používateľského účtu.
Konfigurácia CloudInit by pre tento prípad vyzerala nasledovne:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
[/ruby]
Upozorňujeme že na medzerách záleží. Pred ‘-‘ sú dve medzery. Ak zadáte iba jednu, server ju nemusí prečítať.
Po uložení konfigurácie CloudInit a spustení servera by ste mali byť schopní pripojiť sa k serveru cez SSH pomocou používateľa ‘ubuntu’:
[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]
Inštalácia systémových aktualizácií pomocou CloudInit
Ďalšou veľmi užitočnou vecou, ktorú môžete s CloudInit ľahko dosiahnuť, je spustenie systémových aktualizácií pri prvom spustení. Hoci naše obrazy diskov aktualizujeme často, stále je dobré prijať dodatočné opatrenia, aby ste sa uistili, že vaše systémy sú aktuálne.
Ak chcete nainštalovať systémové aktualizácie pri prvom spustení, pridajte nasledovné:
[ruby]
#cloud-config
apt_update: true
apt_upgrade: true
[/ruby]
Môžete si tiež všimnúť, že existuje podobná možnosť s názvom ‘package_update,’ čo je distribučne neutrálny alias pre ‘apt_update’ v systéme Ubuntu.
Taktiež, ‘apt_update’ bude predvolene nastavené na true, ak je nastavené ‘packages’ (nižšie), ale pridal som to vyššie, aby to bolo explicitnejšie.
Inštalácia balíkov pomocou CloudInit
Jednou zo základných častí pri spúšťaní (bootstrappingu) systémov je možnosť inštalovať balíky pri štarte. Našťastie, CloudInit to tiež uľahčuje. Všetko, čo musíme urobiť, je špecifikovať zoznam balíkov, ktoré chceme nainštalovať, pod položkou ‘packages.’ Napríklad, ak by sme chceli nainštalovať ‘python-pip,’ ‘fail2ban’ a ‘vim’, vyzeralo by to nasledovne:
[ruby]
#cloud-config
packages:
- python-pip
- fail2ban
- vim
[/ruby]
Opäť upozorňujeme, že na medzerách záleží. Pred ‘-‘ sú dve medzery.
Nastavenie hostname pomocou CloudInit
Keď zriaďujete nový server, možno preň budete chcieť nastaviť aj hostname.
[ruby]
#cloud-config
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
[/ruby]
Spustenie príkazov pri prvom spustení pomocou CloudInit
Za predpokladu, že so svojimi servermi robíte niečo sofistikovanejšie, je pravdepodobné, že máte nejaký príkaz, ktorý potrebujete spustiť pri prvom štarte.
Tu prichádzajú na rad ‘runcmd’ a ‘bootcmd’. Obe tieto možnosti vám umožňujú spúšťať príkazy pri prvom štarte. Rozdiel je v tom, že ‘bootcmd’ sa vykonáva skôr v procese spúšťania ako ‘runcmd.’
Ak chcete použiť ktorýkoľvek z týchto príkazov, pridajte do svojho CloudInit nasledovné:
[ruby]
#cloud-config
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
Používanie CloudInit s nástrojom na správu konfigurácie
Na záver, ak ste pokročilejší používateľ cloudu, s najväčšou pravdepodobnosťou používate nejaký nástroj na správu konfigurácie. Našťastie, CloudInit je na to pripravený. Vzhľadom na množstvo premenných je to však pomerne zložitá téma na pokrytie.
Tu je teda niekoľko príkladov, ktoré by vás mali nasmerovať správnym smerom:
Ako spojiť viacero prvkov dohromady
Pre tých, ktorí nepoznajú súbory v štýle YAML, nemusí byť zrejmé, ako reťaziť viacero prvkov CloudInit dohromady. Je to však jednoduché. Na prvom riadku potrebujete ‘#cloud-config‘. Potom jednoducho pridáte svoju konfiguráciu.
Napríklad spojenie všetkých vyššie uvedených príkladov do jednej konfigurácie by vyzeralo nasledovne:
[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]
Additional resources
V tomto článku sme naozaj len poškriabali povrch toho, čo CloudInit dokáže. Existuje množstvo ďalších vecí, ktoré sa môžete naučiť, ako napríklad vytváranie používateľov a skupín, zápis súborov na disk a volanie URL adries po dokončení (na upozornenie iných systémov).
Ak sa chcete o CloudInit dozvedieť viac, odporúčam nasledujúce zdroje:
- Oficiálna dokumentácia CloudInit
- Príručka pre CloudInit od Ubuntu
- Dokumentácia CloudInit od RedHatu
- Knižnica príkladov CloudInit od Ubuntu
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.