1. fejezet · 1.9
Saját cloud-init: a VPS automatikus beállítása az első indításkor
A cloud-init segítségével a telepítéskor megadhat egy fájlt, amelyet a VPS az első indításkor maga hajt végre. Így a szerver azonnal telepíti az állandóan használt csomagjait, létrehozza a saját felhasználóját és lefuttatja a parancsait. Hasznos, ha gyakran telepít újra, vagy mindig ugyanabból az alapból szeretne kiindulni. Ehhez nincs szüksége API-ra vagy terminálra.
Hol adhatja meg?
- Nyissa meg a VPS képernyőjét a Termékeim menüpontban.
- Új VPS esetén megjelenik A VPS telepítése blokk (lásd: A VPS telepítése: operációs rendszer, jelszó és SSH-kulcs). Újratelepítéskor válassza a Speciális fület, és az Újratelepítés résznél kattintson az Újratelepítés... gombra (lásd: Újratelepítés vagy ISO csatolása).
- Válassza ki az operációs rendszert, és adja meg a root jelszót, valamint szükség esetén az SSH-kulcsát, a megszokott módon.
- Az SSH-kulcs alatt kattintson a Saját cloud-init lehetőségre. A mező kinyílik.
- Illessze be a fájlt a mezőbe.
- Kattintson a telepítés gombjára, például a Debian 13 telepítése gombra, újratelepítéskor pedig a Minden törlése és újratelepítés gombra.
A root jelszóra vagy az SSH-kulcsra saját cloud-init esetén is szükség van. Ezekkel mindig be tud lépni, a konzolon keresztül is (lásd: A konzol: a VPS a böngészőben).
Mi lehet a fájlban?
A mező user-data tartalmat fogad, vagyis azt a fájlt, amelyet a cloud-init az első indításkor beolvas. Az első sor határozza meg, hogy mi ez:
| Első sor | Mi ez? |
|---|---|
#cloud-config | YAML formátumú beállítások: csomagok, felhasználók, fájlok, parancsok. Általában ezt használja. |
#!, például #!/bin/bash | Egy szkript. Egyszer fut le root jogosultsággal, az első indítás végén. |
#cloud-boothook | Egy szkript, amely az indítás nagyon korai szakaszában fut, minden indításkor újra. Csak haladó felhasználóknak. |
## template: jinja | Egy sablon a cloud-init változóival. Az alatta lévő sorban ilyenkor #cloud-config vagy #! áll. |
- Legfeljebb 256 KB, és csak szöveg (UTF-8).
- YAML-ben szóközökkel húzzon be, soha ne tabulátorral.
- A hálózatot (IPv4 és IPv6) a WebOké kezeli. Saját network-config nem kerül felhasználásra, ezért ne adjon meg benne hálózati beállításokat.
Egy példa
Ez a fájl frissíti az összes csomagot, telepíti a htop és a fail2ban csomagot, létrehozza az anna felhasználót az Ön SSH-kulcsával és sudo jogosultsággal, saját nevet ad a szervernek, és beállítja az időzónát:
#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
Cserélje ki a kulcsot a saját nyilvános kulcsára (lásd: SSH-kulcs létrehozása Windows, Mac és Linux rendszeren). A - default sor megtartja az alapértelmezett felhasználót, így az űrlapon megadott root jelszó és SSH-kulcs továbbra is működik. Az első indítás után a ssh anna@203.0.113.10 paranccsal jelentkezhet be. Azt, hogy ezután hogyan kapcsolhatja ki a root bejelentkezést és hogyan állíthatja be a fail2ban programot, a A jelszavas és a root bejelentkezés kikapcsolása és a fail2ban a jelszótalálgatás ellen cikkben olvashatja.
Tipp: A példa Debianhoz és Ubuntuhoz készült. AlmaLinux és Rocky Linux rendszeren a htop és a fail2ban az EPEL kiegészítő tárolóban található. Ott hagyja ki a packages részt, és a runcmd alá először a dnf install -y epel-release, majd a dnf install -y htop fail2ban sort írja.
Mit ad át maga a WebOké?
A WebOké mindig átadja a hosztnevet, a root jelszót (csak hash formájában) és az Ön SSH-kulcsát. Az Ön fájlja ezekkel egyesül. Ha Ön maga adja meg a users, password, chpasswd vagy ssh_authorized_keys beállítást, akkor az Öné elsőbbséget élvez a WebOké által átadottakkal szemben.
Figyelem: Ha a fájl legfelső szintjén Ön maga adja meg a ssh_authorized_keys vagy password beállítást, ezek felülírják az űrlapon megadott kulcsot és jelszót. Ilyenkor adja meg benne azt a kulcsot, amellyel be szeretne jelentkezni, különben már csak a konzolon keresztül tud belépni.
Sikerült?
A cloud-init egyszer fut le, a telepítés utáni első indításkor. Ez néha néhány perccel tovább tart, mint maga a telepítés, különösen ha csomagokat kell telepíteni. Jelentkezzen be, és ellenőrizze:
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
- A
cloud-init status --longparancsstatus: doneállapotot mutat, ha minden kész,runningállapotot, ha még fut, éserrorállapotot, ha valami hiba történt, a hibával együtt. Acloud-init status --waitparanccsal megvárhatja, amíg befejeződik. - A
/var/log/cloud-init-output.logfájlban található a csomagok, parancsok és szkriptek kimenete. További részletek a/var/log/cloud-init.logfájlban találhatók. - A
cloud-init schema --systemparancs ellenőrzi a fájlt hibák szempontjából. Ha a YAML nem helyes, a cloud-init kihagyja azokat a részeket, amelyeket nem ért, anélkül hogy a telepítés meghiúsulna.
Valami hiba történt? Javítsa ki kézzel a szerveren, vagy módosítsa a fájlt, és telepítsen újra. Az újratelepítés azonban mindent töröl a VPS-ről.
Jó tudni
- A listában szereplő összes operációs rendszeren működik: Ubuntu 24.04 és 26.04, Debian 12 és 13, AlmaLinux 9 és 10, valamint Rocky Linux 9 és 10.
- A fájl titkosítva kerül továbbításra, és nem tárolódik a VPS feladatainak előzményeiben. Ennek ellenére ne tegyen bele jelszavakat vagy más titkos adatokat, amelyekre nincs szüksége.
- Az összes lehetőséget megtalálja a cloud-init dokumentációjában: docs.cloud-init.io.
Figyelem: A cloud-init tartalmáért Ön felel. Az ügyfélszolgálat nem nézi át a fájlt, és nem segít annak megírásában vagy javításában.
