1 skyrius · 1.9
Savas cloud-init: automatiškai paruoškite VPS per pirmąjį paleidimą
Su cloud-init diegimo metu galite pateikti failą, kurį Jūsų VPS pats įvykdo per pirmąjį paleidimą. Taip serveris iš karto įdiegia Jūsų nuolatinius paketus, sukuria Jūsų naudotoją ir įvykdo Jūsų komandas. Tai patogu, jei dažnai diegiate iš naujo arba visada norite pradėti nuo to paties pagrindo. Tam nereikia nei API, nei terminalo.
Kur jį įvesti?
- Atidarykite VPS ekraną per Mano produktai.
- Naujas VPS: matysite bloką Įdiekite savo VPS (žr. VPS įdiegimas: operacinė sistema, slaptažodis ir SSH raktas). Diegimas iš naujo: pasirinkite skirtuką Išplėstiniai ir ties Diegimas iš naujo spustelėkite Įdiegti iš naujo... (žr. Diegimas iš naujo arba ISO prijungimas).
- Pasirinkite operacinę sistemą ir, kaip įprasta, įveskite root slaptažodį bei, jei norite, savo SSH raktą.
- Po SSH raktu spustelėkite Savas cloud-init. Laukas išsiskleis.
- Įklijuokite savo failą į lauką.
- Spustelėkite diegimo mygtuką, pavyzdžiui, Įdiegti: Debian 13, arba, diegiant iš naujo, Ištrinti viską ir įdiegti iš naujo.
Root slaptažodis arba SSH raktas reikalingi ir naudojant savą cloud-init. Su jais visada galėsite prisijungti, taip pat per konsolę (žr. Konsolė: Jūsų VPS naršyklėje).
Ką galima įrašyti į failą?
Laukas priima user-data, t. y. failą, kurį cloud-init perskaito per pirmąjį paleidimą. Pirmoji eilutė nustato, kas tai yra:
| Pirmoji eilutė | Kas tai? |
|---|---|
#cloud-config | Nustatymai YAML formatu: paketai, naudotojai, failai, komandos. Dažniausiai naudosite būtent tai. |
#!, pavyzdžiui, #!/bin/bash | Scenarijus. Jis paleidžiamas vieną kartą kaip root, pirmojo paleidimo pabaigoje. |
#cloud-boothook | Scenarijus, kuris vykdomas labai anksti paleidimo metu, iš naujo per kiekvieną paleidimą. Tik pažengusiems naudotojams. |
## template: jinja | Šablonas su cloud-init kintamaisiais. Tuomet kitoje eilutėje nurodoma #cloud-config arba #!. |
- Ne daugiau kaip 256 KB ir tik tekstas (UTF-8).
- YAML formate įtraukos daromos tarpais, niekada ne tabuliacijos ženklais.
- Tinklą (IPv4 ir IPv6) tvarko WebOké. Savas network-config nenaudojamas, todėl tinklo nustatymų į failą neįrašykite.
Pavyzdys
Šis failas atnaujina visus paketus, įdiegia htop ir fail2ban, sukuria naudotoją anna su Jūsų SSH raktu ir sudo teisėmis, suteikia serveriui savą pavadinimą ir nustato laiko juostą:
#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
Pakeiskite raktą savo viešuoju raktu (žr. Kaip sukurti SSH raktą Windows, Mac ir Linux sistemose). Eilutė - default palieka numatytąjį naudotoją, todėl root slaptažodis ir SSH raktas iš formos toliau veikia. Po pirmojo paleidimo prisijunkite su ssh anna@203.0.113.10. Kaip po to išjungti prisijungimą kaip root ir nustatyti fail2ban, skaitykite Prisijungimo slaptažodžiu ir prisijungimo kaip root išjungimas ir fail2ban apsaugai nuo slaptažodžių spėjimo.
Patarimas: Pavyzdys skirtas Debian ir Ubuntu. AlmaLinux ir Rocky Linux sistemose htop ir fail2ban yra papildomame šaltinyje EPEL. Ten praleiskite packages ir po runcmd pirmiausia įrašykite dnf install -y epel-release, o po to dnf install -y htop fail2ban.
Ką WebOké pateikia pati?
WebOké visada pateikia serverio vardą, root slaptažodį (tik kaip maišos reikšmę) ir Jūsų SSH raktą. Jūsų failas su tuo sujungiamas. Jei patys nurodote users, password, chpasswd arba ssh_authorized_keys, Jūsų reikšmės turi pirmenybę prieš tai, ką pateikia WebOké.
Dėmesio: Jei patys įrašote ssh_authorized_keys arba password aukščiausiame failo lygmenyje, jie pakeičia raktą ir slaptažodį iš formos. Tokiu atveju patys įrašykite raktą, su kuriuo norite prisijungti, kitaip galėsite prisijungti tik per konsolę.
Ar pavyko?
cloud-init vykdomas vieną kartą, per pirmąjį paleidimą po diegimo. Kartais tai užtrunka keliomis minutėmis ilgiau nei pats diegimas, ypač jei diegiami paketai. Prisijunkite ir patikrinkite:
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 --longrodostatus: done, kai viskas baigta,running, kai darbas dar vyksta, irerror, jei kažkas nepavyko, kartu su klaida. Sucloud-init status --waitpalauksite, kol darbas bus baigtas.- Faile
/var/log/cloud-init-output.lograsite Jūsų paketų, komandų ir scenarijų išvestį. Daugiau informacijos yra/var/log/cloud-init.log. cloud-init schema --systempatikrina, ar Jūsų faile nėra klaidų. Jei YAML neteisingas, cloud-init praleidžia dalis, kurių nesupranta, tačiau diegimas nenutrūksta.
Kažkas nepavyko? Pataisykite tai rankiniu būdu serveryje arba pakoreguokite failą ir įdiekite iš naujo. Atminkite, kad diegimas iš naujo ištrina viską Jūsų VPS.
Verta žinoti
- Tai veikia su visomis sąraše esančiomis operacinėmis sistemomis: Ubuntu 24.04 ir 26.04, Debian 12 ir 13, AlmaLinux 9 ir 10 bei Rocky Linux 9 ir 10.
- Jūsų failas perduodamas šifruotas ir nesaugomas Jūsų VPS užduočių istorijoje. Vis dėlto neįrašykite į jį slaptažodžių ar kitų slaptų duomenų, kurių Jums nereikia.
- Visos galimybės aprašytos cloud-init dokumentacijoje adresu docs.cloud-init.io.
Dėmesio: Už savo cloud-init turinį atsakote Jūs patys. Pagalbos tarnyba Jūsų failo neperžiūri ir nepadeda jo rašyti ar tobulinti.
