Poglavlje 1 · 1.9
Vlastiti cloud-init: automatsko postavljanje Vašeg VPS-a pri prvom pokretanju
Pomoću cloud-inita pri instalaciji predajete datoteku koju Vaš VPS sam izvršava pri prvom pokretanju. Tako Vaš poslužitelj odmah instalira Vaše uobičajene pakete, stvara Vašeg korisnika i izvršava Vaše naredbe. To je korisno ako češće ponovno instalirate ili uvijek želite započeti s istom osnovom. Za to Vam nisu potrebni API ni terminal.
Gdje to unosite?
- Otvorite zaslon VPS-a putem Moji proizvodi.
- Novi VPS: vidite blok Instalirajte svoj VPS (pogledajte Instalacija Vašeg VPS-a: operacijski sustav, lozinka i SSH ključ). Ponovna instalacija: odaberite karticu Napredno i kod Ponovna instalacija kliknite Instalirajte ponovno... (pogledajte Ponovna instalacija ili povezivanje ISO-a).
- Odaberite operacijski sustav i unesite root lozinku te po potrebi svoj SSH ključ, kao i uvijek.
- Ispod SSH ključa kliknite Vlastiti cloud-init. Polje se otvara.
- Zalijepite svoju datoteku u polje.
- Kliknite gumb za instalaciju, primjerice Instalirajte Debian 13, ili kod ponovne instalacije Izbrišite sve i ponovno instalirajte.
Root lozinka ili SSH ključ i dalje su potrebni, i uz vlastiti cloud-init. Pomoću njih se uvijek možete prijaviti, i putem konzole (pogledajte Konzola: Vaš VPS u pregledniku).
Što smije biti u datoteci?
Polje prihvaća user-data, datoteku koju cloud-init čita pri prvom pokretanju. Prvi redak određuje o čemu se radi:
| Prvi redak | Što je to? |
|---|---|
#cloud-config | Postavke u YAML-u: paketi, korisnici, datoteke, naredbe. Ovo ćete najčešće koristiti. |
#!, primjerice #!/bin/bash | Skripta. Izvršava se jednom kao root, na kraju prvog pokretanja. |
#cloud-boothook | Skripta koja se izvršava vrlo rano pri pokretanju, pri svakom pokretanju iznova. Samo za napredne korisnike. |
## template: jinja | Predložak s varijablama cloud-inita. U retku ispod tada stoji #cloud-config ili #!. |
- Najviše 256 KB i samo tekst (UTF-8).
- U YAML-u uvlačite razmacima, nikada tabulatorima.
- Mrežom (IPv4 i IPv6) upravlja WebOké. Vlastiti network-config se ne koristi, stoga u datoteku ne stavljajte mrežne postavke.
Primjer
Ova datoteka ažurira sve pakete, instalira htop i fail2ban, stvara korisnika anna s Vašim SSH ključem i sudo ovlastima, daje poslužitelju vlastito ime i ispravno postavlja vremensku zonu:
#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
Zamijenite ključ svojim javnim ključem (pogledajte Izrada SSH ključa na Windowsu, Macu i Linuxu). Redak - default zadržava zadanog korisnika, tako da root lozinka i SSH ključ iz obrasca i dalje normalno rade. Nakon prvog pokretanja prijavljujete se s ssh anna@203.0.113.10. Kako zatim isključiti prijavu kao root i postaviti fail2ban, pročitajte u Isključivanje prijave lozinkom i prijave kao root i fail2ban protiv pokušaja pogađanja lozinke.
Savjet: Primjer je namijenjen za Debian i Ubuntu. Na AlmaLinuxu i Rocky Linuxu htop i fail2ban nalaze se u dodatnom izvoru EPEL. Ondje izostavite packages i pod runcmd najprije stavite dnf install -y epel-release, a zatim dnf install -y htop fail2ban.
Što WebOké sam predaje?
WebOké uvijek predaje naziv poslužitelja, root lozinku (samo kao hash) i Vaš SSH ključ. Vaša se datoteka spaja s tim podacima. Ako sami postavite users, password, chpasswd ili ssh_authorized_keys, Vaše vrijednosti imaju prednost pred onima koje predaje WebOké.
Napomena: Ako sami postavite ssh_authorized_keys ili password na najvišu razinu svoje datoteke, oni zamjenjuju ključ i lozinku iz obrasca. U tom slučaju sami unesite ključ s kojim se želite prijavljivati, jer se inače možete prijaviti samo putem konzole.
Je li uspjelo?
cloud-init se izvršava jednom, pri prvom pokretanju nakon instalacije. To ponekad traje nekoliko minuta dulje od same instalacije, osobito ako se instaliraju paketi. Prijavite se i provjerite:
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 --longprikazujestatus: donekada je sve gotovo,runningdok je još u tijeku ierrorako je nešto pošlo po zlu, zajedno s pogreškom. Pomoćucloud-init status --waitčekate dok ne završi.- U
/var/log/cloud-init-output.lognalazi se izlaz Vaših paketa, naredbi i skripti. Više pojedinosti nalazi se u/var/log/cloud-init.log. cloud-init schema --systemprovjerava ima li Vaša datoteka pogrešaka. Ako YAML nije ispravan, cloud-init preskače dijelove koje ne razumije, a da instalacija pritom ne ne uspije.
Je li nešto pošlo po zlu? Popravite to ručno na poslužitelju ili prilagodite svoju datoteku i ponovno instalirajte. Ponovna instalacija ipak briše sve na Vašem VPS-u.
Dobro je znati
- Radi za sve operacijske sustave na popisu: Ubuntu 24.04 i 26.04, Debian 12 i 13, AlmaLinux 9 i 10 te Rocky Linux 9 i 10.
- Vaša se datoteka prenosi šifrirano i ne sprema se u povijest zadataka Vašeg VPS-a. Ipak u nju ne stavljajte lozinke ni druge tajne podatke koji Vam nisu potrebni.
- Sve mogućnosti opisane su u dokumentaciji cloud-inita na docs.cloud-init.io.
Napomena: Sadržaj Vašeg cloud-inita Vaša je odgovornost. Podrška ne pregledava Vašu datoteku i ne pomaže pri njezinu pisanju ili poboljšanju.
