Zpět na blog

Úvod do zřizování serverů pomocí CloudInit

Úvod do zřizování serverů pomocí CloudInit

Tento měsíc jsme oznámili velmi vzrušující partnerství s Canonical, tvůrci systému Ubuntu. Hlavním prvkem tohoto partnerství je především zavedení plné podpory CloudInit mezi cloudem CloudSigma a Ubuntu.

Úvod do CloudInit

Pokud nejste obeznámeni s CloudInit, jedná se o průmyslový standard pro bootstrapping cloudových serverů. Pro upřesnění, pokud používáte jednoduché DSL je možné snadno provádět úkoly při prvním spuštění. Za zmínku také stojí, že CloudInit se neomezuje pouze na Ubuntu. Dnes najdete podporu CloudInit ve většině moderních distribucí Linuxu (podporované cloudy se však budou lišit).

Než začneme s CloudInit, je důležité pochopit, kam CloudInit zapadá do ekosystému provisioningu. I když je možné spustit CloudInit jako samostatný provisioningový systém, mnohem běžnější je používat jej ve spojení s jiným provisioningovým systémem, jako je Ansible, Chef, Puppet nebo Salt. V takovém případě byste jednoduše použili CloudInit k uvedení nového serveru do stavu, kdy může provisioningový systém převzít kontrolu. Osobně často používám CloudInit v kombinaci s Ansible.

Použití CloudInit na CloudSigma

Použití CloudInit na CloudSigma je velmi jednoduché.

Chcete-li použít CloudInit na serveru Ubuntu 14.04, postupujte takto:

    • Naklonujte disk “Ubuntu 14.04 Cloud Image” z marketplace (v současnosti jediný plně podporovaný disk s CloudInit). Nezapomeňte změnit velikost klonovaného disku na požadovanou velikost a při prvním spuštění automaticky dojde k rozšíření souborového systému.
    • Vytvořte nový server.
    • Po vytvoření serveru uvidíte pod stavem serveru tlačítko CloudInit.

CloudInit

    • Po kliknutí na toto tlačítko se zobrazí následující dialogové okno.

CloudInit_activate

  • Sem jednoduše vložte svá data CloudInit a stiskněte ‘Aktivovat’.
  • Můžete spustit server a skript se spustí při prvním spuštění.

Instalace SSH klíčů pomocí CloudInit

Nyní, když víte, jak používat CloudInit v našem cloudu, pojďme tyto nově nabyté znalosti využít k instalaci dvou SSH klíčů. Dva fiktivní veřejné SSH klíče, které budeme používat, jsou ‘ssh-rsa AAA[…] user1@host‘ a ‘ssh-rsa AAA[…] user2@host‘. (Chcete-li se dozvědět více o generování SSH klíčů, podívejte se prosím na tuto stránku na Githubu.)

V Ubuntu Cloud Images je výchozí uživatelské jméno ‘ubuntu’. Klíče proto budou nainstalovány do tohoto uživatelského účtu.

Konfigurace CloudInit by pro tento případ vypadala následovně:

[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
[/ruby]

Upozorňujeme, že na mezerách záleží. Před ‘-‘ jsou dvě mezery. Pokud zadáte pouze jednu, server ji nemusí přečíst.

Jakmile uložíte konfiguraci CloudInit a spustíte server, měli byste se k němu připojit přes SSH pomocí uživatele ‘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]

Instalace systémových aktualizací pomocí CloudInit

Další velmi užitečnou věcí, kterou můžete s CloudInit snadno provést, je spuštění systémových aktualizací při prvním spuštění. Přestože naše diskové obrazy často aktualizujeme, je stále dobré přijmout další opatření, abyste zajistili, že vaše systémy budou aktuální.

Chcete-li nainstalovat systémové aktualizace při prvním spuštění, přidejte následující:

[ruby]
#cloud-config
apt_update: true
apt_upgrade: true
[/ruby]

Můžete si také všimnout, že existuje podobná možnost nazvaná ‘package_update,’ což je na Ubuntu alias nezávislý na distribuci pro ‘apt_update’.

Také ‘apt_update’ bude ve výchozím nastavení nastaveno na true, pokud je nastaveno ‘packages’ (níže), ale přidal jsem to výše, aby to bylo jasnější.

Instalace balíčků pomocí CloudInit

Jednou ze základních částí pro inicializaci (bootstrapping) systémů je možnost instalovat balíčky při spuštění. CloudInit to naštěstí také usnadňuje. Stačí pouze specifikovat seznam balíčků, které chceme nainstalovat, pod ‘packages.’ Pokud bychom například chtěli nainstalovat ‘python-pip,’ ‘fail2ban’ a ‘vim’, vypadalo by to následovně:

[ruby]
#cloud-config
packages:
- python-pip
- fail2ban
- vim
[/ruby]

Vezměte prosím opět na vědomí že na mezerách záleží. Před ‘-‘ jsou dvě mezery.

Nastavení hostname pomocí CloudInit

Při zřizování nového serveru pro něj možná budete chtít také nastavit hostname.

[ruby]
#cloud-config
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
[/ruby]

Spouštění příkazů při prvním spuštění pomocí CloudInit

Pokud se svými servery děláte něco sofistikovanějšího, je pravděpodobné, že máte nějaký příkaz, který potřebujete spustit při prvním spuštění.

Zde přichází na řadu ‘runcmd’ a ‘bootcmd’. Obě tyto možnosti umožňují spouštět příkazy při prvním spuštění. Rozdíl je v tom, že ‘bootcmd’ se spouští dříve v procesu zavádění systému než ‘runcmd.’

Chcete-li použít kterýkoli z těchto příkazů, přidejte do svého CloudInit následující:

[ruby]
#cloud-config
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]

Použití CloudInit s nástrojem pro správu konfigurace

A konečně, pokud jste pokročilejší uživatel cloudu, s největší pravděpodobností používáte nějaký nástroj pro správu konfigurace. CloudInit je na to naštěstí připraven. Vzhledem k mnoha proměnným se však jedná o poměrně složité téma.

Zde je tedy několik příkladů, které by vás měly nasměrovat správným směrem:

Jak propojit více prvků dohromady

Pro ty, kteří neznají soubory ve stylu YAML, nemusí být zřejmé, jak propojit více prvků CloudInit dohromady. Je to však jednoduché. Na prvním řádku potřebujete ‘#cloud-config‘. Poté jednoduše přidáte svou konfiguraci.

Například spojení všech výše uvedených příkladů do jedné konfigurace by vypadalo následovně:

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

Další zdroje

V tomto článku jsme se skutečně jen dotkli povrchu toho, co CloudInit dokáže. Existuje spousta dalších věcí, které se můžete naučit, jako například vytváření uživatelů a skupin, zápis souborů na disk a volání URL po dokončení (pro upozornění ostatních systémů).

Pokud se chcete o CloudInit dozvědět více, doporučuji následující zdroje:

author

Viktor Petersson

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.