Poglavje 1 · 1.9
Lasten cloud-init: samodejna nastavitev Vašega VPS ob prvem zagonu
S cloud-init ob namestitvi priložite datoteko, ki jo Vaš VPS ob prvem zagonu izvede sam. Tako strežnik takoj namesti Vaše stalne pakete, ustvari Vašega uporabnika in izvede Vaše ukaze. To je priročno, če pogosto nameščate znova ali želite vedno začeti z enako osnovo. Za to ne potrebujete API-ja ali terminala.
Kje to vnesete?
- Odprite zaslon VPS prek Moji produkti.
- Nov VPS: videli boste razdelek Namestite svoj VPS (glejte Namestitev VPS: operacijski sistem, geslo in ključ SSH). Ponovna namestitev: izberite zavihek Napredno in pri Ponovna namestitev kliknite Namestite znova... (glejte Ponovna namestitev ali priklop ISO).
- Izberite operacijski sistem ter kot običajno vnesite geslo za root in po želji svoj ključ SSH.
- Pod ključem SSH kliknite Lasten cloud-init. Polje se razpre.
- V polje prilepite svojo datoteko.
- Kliknite gumb za namestitev, na primer Namestite Debian 13, pri ponovni namestitvi pa Izbrišite vse in namestite znova.
Geslo za root ali ključ SSH potrebujete tudi pri lastnem cloud-init. Z njima se lahko vedno prijavite, tudi prek konzole (glejte Konzola: Vaš VPS v brskalniku).
Kaj lahko vsebuje datoteka?
Polje sprejme user-data, datoteko, ki jo cloud-init prebere ob prvem zagonu. Prva vrstica določa, za kaj gre:
| Prva vrstica | Kaj je to? |
|---|---|
#cloud-config | Nastavitve v YAML: paketi, uporabniki, datoteke, ukazi. To boste uporabljali najpogosteje. |
#!, na primer #!/bin/bash | Skripta. Zažene se enkrat kot root, na koncu prvega zagona. |
#cloud-boothook | Skripta, ki se zažene zelo zgodaj med zagonom, in sicer ob vsakem zagonu znova. Samo za izkušene uporabnike. |
## template: jinja | Predloga s spremenljivkami cloud-init. V vrstici pod njo je nato #cloud-config ali #!. |
- Največ 256 KB in samo besedilo (UTF-8).
- V YAML zamikate s presledki, nikoli s tabulatorji.
- Omrežje (IPv4 in IPv6) ureja WebOké. Lasten network-config se ne uporablja, zato vanj ne vpisujte omrežnih nastavitev.
Primer
Ta datoteka posodobi vse pakete, namesti htop in fail2ban, ustvari uporabnika anna z Vašim ključem SSH in pravicami sudo, strežniku dodeli lastno ime in pravilno nastavi časovni pas:
#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
Ključ zamenjajte s svojim javnim ključem (glejte Ustvarjanje ključa SSH v sistemih Windows, Mac in Linux). Vrstica - default ohrani privzetega uporabnika, tako da geslo za root in ključ SSH iz obrazca še naprej delujeta. Po prvem zagonu se prijavite z ssh anna@203.0.113.10. Kako nato onemogočite prijavo kot root in nastavite fail2ban, preberite v Onemogočite prijavo z geslom in kot root in fail2ban proti poskusom ugibanja gesel.
Nasvet: Primer je namenjen sistemoma Debian in Ubuntu. Na AlmaLinux in Rocky Linux sta htop in fail2ban v dodatnem viru EPEL. Tam izpustite packages in pod runcmd najprej vpišite dnf install -y epel-release, nato pa dnf install -y htop fail2ban.
Kaj doda WebOké sam?
WebOké vedno doda ime gostitelja, geslo za root (samo kot zgoščeno vrednost) in Vaš ključ SSH. Vaša datoteka se s tem združi. Če sami nastavite users, password, chpasswd ali ssh_authorized_keys, imajo Vaše nastavitve prednost pred tistimi, ki jih doda WebOké.
Pozor: Če sami nastavite ssh_authorized_keys ali password na najvišji ravni datoteke, ti nadomestita ključ in geslo iz obrazca. V tem primeru sami vpišite ključ, s katerim se želite prijavljati, sicer se boste lahko prijavili le še prek konzole.
Je uspelo?
cloud-init se zažene enkrat, ob prvem zagonu po namestitvi. To lahko traja nekaj minut dlje od same namestitve, zlasti če se nameščajo paketi. Prijavite se in preverite:
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 --longprikažestatus: done, ko je vse končano,running, ko se še izvaja, inerror, če je šlo kaj narobe, skupaj z napako. Zcloud-init status --waitpočakate, da se konča.- V
/var/log/cloud-init-output.logje izpis Vaših paketov, ukazov in skript. Več podrobnosti najdete v/var/log/cloud-init.log. cloud-init schema --systempreveri, ali so v Vaši datoteki napake. Če YAML ni pravilen, cloud-init preskoči dele, ki jih ne razume, ne da bi namestitev spodletela.
Je šlo kaj narobe? Napako odpravite ročno na strežniku ali prilagodite datoteko in namestite znova. Ponovna namestitev pa izbriše vse na Vašem VPS.
Dobro je vedeti
- Deluje za vse operacijske sisteme na seznamu: Ubuntu 24.04 in 26.04, Debian 12 in 13, AlmaLinux 9 in 10 ter Rocky Linux 9 in 10.
- Vaša datoteka se prenese šifrirano in se ne shrani v zgodovino opravil Vašega VPS. Kljub temu vanjo ne vpisujte gesel ali drugih skrivnosti, ki jih ne potrebujete.
- Vse možnosti so opisane v dokumentaciji cloud-init na docs.cloud-init.io.
Pozor: Za vsebino svojega cloud-init ste odgovorni sami. Podpora ne pregleduje Vaše datoteke in ne pomaga pri njenem pisanju ali izboljšanju.
