Capitolul 1 · 1.9
cloud-init propriu: configurați automat VPS-ul la prima pornire
Cu cloud-init, la instalare transmiteți un fișier pe care VPS-ul dumneavoastră îl execută singur la prima pornire. Astfel, serverul instalează imediat pachetele dvs. obișnuite, vă creează propriul utilizator și rulează comenzile dvs. Este util dacă reinstalați des sau doriți să porniți mereu de la aceeași bază. Nu aveți nevoie de API sau de terminal.
Unde îl completați?
- Deschideți ecranul VPS din Produsele mele.
- VPS nou: vedeți secțiunea Instalați VPS-ul (vedeți Instalarea VPS-ului dumneavoastră: sistem de operare, parolă și cheie SSH). Reinstalare: alegeți fila Avansat și, la Reinstalare, faceți clic pe Reinstalați... (vedeți Reinstalarea sau atașarea unui ISO).
- Alegeți sistemul de operare și completați parola root și, eventual, cheia SSH, ca de obicei.
- Sub cheia SSH, faceți clic pe cloud-init propriu. Câmpul se deschide.
- Lipiți fișierul dvs. în câmp.
- Faceți clic pe butonul de instalare, de exemplu Instalați Debian 13, sau, la reinstalare, pe Ștergeți tot și reinstalați.
Parola root sau cheia SSH rămâne necesară, chiar și cu un cloud-init propriu. Cu acestea puteți intra întotdeauna, inclusiv prin consolă (vedeți Consola: serverul VPS în browserul dumneavoastră).
Ce poate conține fișierul?
Câmpul acceptă user-data, fișierul pe care cloud-init îl citește la prima pornire. Prima linie stabilește ce tip de fișier este:
| Prima linie | Ce este? |
|---|---|
#cloud-config | Setări în YAML: pachete, utilizatori, fișiere, comenzi. Pe acesta îl veți folosi de obicei. |
#!, de exemplu #!/bin/bash | Un script. Rulează o singură dată ca root, la sfârșitul primei porniri. |
#cloud-boothook | Un script care rulează foarte devreme în procesul de pornire, din nou la fiecare pornire. Doar pentru utilizatori avansați. |
## template: jinja | Un șablon cu variabile cloud-init. Pe linia de dedesubt se află atunci #cloud-config sau #!. |
- Maximum 256 KB și doar text (UTF-8).
- În YAML indentați cu spații, niciodată cu taburi.
- Rețeaua (IPv4 și IPv6) este gestionată de WebOké. Un network-config propriu nu este folosit, așadar nu includeți setări de rețea.
Un exemplu
Acest fișier actualizează toate pachetele, instalează htop și fail2ban, creează utilizatorul anna cu cheia dvs. SSH și sudo, îi dă serverului un nume propriu și setează corect fusul orar:
#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
Înlocuiți cheia cu propria dvs. cheie publică (vedeți Crearea unei chei SSH pe Windows, Mac și Linux). Linia - default păstrează utilizatorul implicit, astfel încât parola root și cheia SSH din formular continuă să funcționeze. După prima pornire vă conectați cu ssh anna@203.0.113.10. Cum dezactivați apoi conectarea ca root și cum configurați fail2ban aflați în Dezactivarea autentificării cu parolă și ca root și fail2ban împotriva încercărilor de ghicire a parolei.
Sfat: Exemplul este pentru Debian și Ubuntu. Pe AlmaLinux și Rocky Linux, htop și fail2ban se află în sursa suplimentară EPEL. Acolo omiteți packages și puneți sub runcmd mai întâi dnf install -y epel-release și apoi dnf install -y htop fail2ban.
Ce transmite WebOké de la sine?
WebOké transmite întotdeauna numele gazdei, parola root (doar ca hash) și cheia dvs. SSH. Fișierul dvs. este combinat cu acestea. Dacă setați chiar dvs. users, password, chpasswd sau ssh_authorized_keys, valorile dvs. au prioritate față de ce transmite WebOké.
Atenție: Dacă setați chiar dvs. ssh_authorized_keys sau password la nivelul cel mai de sus al fișierului, acestea înlocuiesc cheia și parola din formular. În acest caz, adăugați chiar dvs. cheia cu care doriți să vă conectați, altfel veți putea intra doar prin consolă.
A funcționat?
cloud-init rulează o singură dată, la prima pornire după instalare. Uneori durează câteva minute mai mult decât instalarea propriu-zisă, mai ales dacă se instalează pachete. Conectați-vă și verificați:
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 --longafișeazăstatus: donecând totul este gata,runningdacă încă lucrează șierrordacă ceva nu a mers, împreună cu eroarea. Cucloud-init status --waitașteptați până termină.- În
/var/log/cloud-init-output.loggăsiți rezultatul pachetelor, comenzilor și scripturilor dvs. Mai multe detalii se află în/var/log/cloud-init.log. cloud-init schema --systemverifică fișierul dvs. pentru erori. Dacă YAML-ul nu este corect, cloud-init omite părțile pe care nu le înțelege, fără ca instalarea să eșueze.
Ceva nu a mers? Remediați manual pe server sau modificați fișierul și reinstalați. Atenție însă: reinstalarea șterge tot de pe VPS-ul dvs.
Bine de știut
- Funcționează pentru toate sistemele de operare din listă: Ubuntu 24.04 și 26.04, Debian 12 și 13, AlmaLinux 9 și 10 și Rocky Linux 9 și 10.
- Fișierul dvs. este transmis criptat și nu este păstrat în istoricul sarcinilor VPS-ului. Totuși, nu includeți parole sau alte secrete de care nu aveți nevoie.
- Toate posibilitățile sunt descrise în documentația cloud-init, la docs.cloud-init.io.
Atenție: Conținutul fișierului cloud-init este responsabilitatea dumneavoastră. Echipa de suport nu verifică fișierul dvs. și nu ajută la scrierea sau îmbunătățirea acestuia.
