Kapitola 1 · 1.9
Vlastný cloud-init: automatické nastavenie VPS pri prvom spustení
Pomocou cloud-init pridáte pri inštalácii súbor, ktorý váš VPS pri prvom spustení sám vykoná. Server tak hneď nainštaluje vaše obvyklé balíky, vytvorí vášho vlastného používateľa a spustí vaše príkazy. Hodí sa to, ak preinštalovávate častejšie alebo chcete vždy začínať s rovnakým základom. Nepotrebujete na to API ani terminál.
Kde to vyplníte?
- Otvorte obrazovku VPS cez Moje produkty.
- Nový VPS: zobrazí sa blok Nainštalujte svoj VPS (pozrite Inštalácia VPS: operačný systém, heslo a kľúč SSH). Preinštalovanie: vyberte kartu Pokročilé a pri Preinštalovanie kliknite na Preinštalovať... (pozrite Preinštalovanie alebo pripojenie ISO).
- Vyberte operačný systém a ako obvykle vyplňte heslo pre root a prípadne váš kľúč SSH.
- Pod kľúčom SSH kliknite na Vlastný cloud-init. Pole sa rozbalí.
- Vložte do poľa svoj súbor.
- Kliknite na tlačidlo inštalácie, napríklad Nainštalovať Debian 13, alebo pri preinštalovaní na Zmazať všetko a preinštalovať.
Heslo pre root alebo kľúč SSH sú potrebné aj s vlastným cloud-init. Vďaka nim sa vždy dostanete dnu, aj cez konzolu (pozrite Konzola: váš VPS v prehliadači).
Čo môže súbor obsahovať?
Pole prijíma user-data, teda súbor, ktorý cloud-init načíta pri prvom spustení. O tom, čo súbor obsahuje, rozhoduje prvý riadok:
| Prvý riadok | Čo to je? |
|---|---|
#cloud-config | Nastavenia v YAML: balíky, používatelia, súbory, príkazy. Toto budete používať najčastejšie. |
#!, napríklad #!/bin/bash | Skript. Spustí sa raz ako root, na konci prvého spustenia. |
#cloud-boothook | Skript, ktorý sa spúšťa veľmi skoro počas štartu, a to pri každom spustení. Len pre pokročilých. |
## template: jinja | Šablóna s premennými z cloud-init. Na nasledujúcom riadku potom nasleduje #cloud-config alebo #!. |
- Najviac 256 KB a iba text (UTF-8).
- V YAML odsadzujte medzerami, nikdy tabulátormi.
- Sieť (IPv4 a IPv6) zabezpečuje WebOké. Vlastný network-config sa nepoužije, preto do súboru nedávajte žiadne sieťové nastavenia.
Príklad
Tento súbor aktualizuje všetky balíky, nainštaluje htop a fail2ban, vytvorí používateľa anna s vaším kľúčom SSH a právami sudo, dá serveru vlastný názov a nastaví správne časové pásmo:
#cloud-config
hostname: web1
fqdn: web1.example.com
package_update: true
package_upgrade: true
packages:
- htop
- fail2ban
users:
- default
- name: anna
shell: /bin/bash
sudo: "ALL=(ALL) NOPASSWD:ALL"
ssh_authorized_keys:
- ssh-ed25519 AAAAC3Nza... anna@laptop
runcmd:
- timedatectl set-timezone Europe/Amsterdam
Kľúč nahraďte svojím vlastným verejným kľúčom (pozrite Vytvorenie kľúča SSH vo Windows, Mac a Linux). Riadok - default ponechá predvoleného používateľa, takže heslo pre root a kľúč SSH z formulára budú naďalej fungovať. Po prvom spustení sa prihlásite pomocou ssh anna@203.0.113.10. Ako potom vypnúť prihlasovanie ako root a nastaviť fail2ban, sa dočítate v Vypnutie prihlasovania heslom a ako root a fail2ban proti pokusom o uhádnutie hesla.
Tip: Príklad je určený pre Debian a Ubuntu. V AlmaLinux a Rocky Linux sú htop a fail2ban v doplnkovom zdroji EPEL. Tam vynechajte packages a pod runcmd uveďte najprv dnf install -y epel-release a potom dnf install -y htop fail2ban.
Čo pridáva samotné WebOké?
WebOké vždy pridá názov hostiteľa, heslo pre root (iba ako hash) a váš kľúč SSH. Váš súbor sa s tým zlúči. Ak sami nastavíte users, password, chpasswd alebo ssh_authorized_keys, majú vaše hodnoty prednosť pred tým, čo pridáva WebOké.
Upozornenie: Ak sami uvediete ssh_authorized_keys alebo password na najvyššej úrovni súboru, nahradia kľúč a heslo z formulára. V takom prípade tam sami vložte kľúč, ktorým sa chcete prihlasovať, inak sa dostanete dnu už len cez konzolu.
Podarilo sa to?
cloud-init sa spustí raz, pri prvom spustení po inštalácii. Niekedy to trvá o pár minút dlhšie než samotná inštalácia, najmä ak sa inštalujú balíky. Prihláste sa a skontrolujte:
anna@web1:~$ cloud-init status --long
anna@web1:~$ sudo tail -n 30 /var/log/cloud-init-output.log
anna@web1:~$ sudo cloud-init schema --system
cloud-init status --longzobrazístatus: done, keď je všetko hotové,running, keď ešte prebieha, aerror, keď sa niečo pokazilo, aj s chybou. Pomocoucloud-init status --waitpočkáte, kým sa nedokončí.- V
/var/log/cloud-init-output.lognájdete výstup vašich balíkov, príkazov a skriptov. Viac podrobností je v/var/log/cloud-init.log. cloud-init schema --systemskontroluje váš súbor na chyby. Ak YAML nie je správny, cloud-init preskočí časti, ktorým nerozumie, bez toho, aby inštalácia zlyhala.
Niečo sa nepodarilo? Opravte to ručne na serveri alebo upravte súbor a preinštalujte. Preinštalovanie však zmaže všetko na vašom VPS.
Dobré vedieť
- Funguje to pre všetky operačné systémy v zozname: Ubuntu 24.04 a 26.04, Debian 12 a 13, AlmaLinux 9 a 10 a Rocky Linux 9 a 10.
- Váš súbor sa odovzdáva šifrovane a neukladá sa v histórii úloh vášho VPS. Napriek tomu doň nevkladajte heslá ani iné tajné údaje, ktoré nepotrebujete.
- Všetky možnosti nájdete v dokumentácii cloud-init na docs.cloud-init.io.
Upozornenie: Za obsah vášho cloud-init zodpovedáte vy. Podpora váš súbor nekontroluje a nepomáha s jeho písaním ani vylepšovaním.
