Κεφάλαιο 1 · 1.9
Δικό σας cloud-init: αυτόματη ρύθμιση του VPS σας κατά την πρώτη εκκίνηση
Με το cloud-init δίνετε κατά την εγκατάσταση ένα αρχείο, το οποίο το VPS σας εκτελεί μόνο του κατά την πρώτη εκκίνηση. Έτσι ο server σας εγκαθιστά αμέσως τα πακέτα που χρησιμοποιείτε πάντα, δημιουργεί τον δικό σας χρήστη και εκτελεί τις εντολές σας. Αυτό είναι χρήσιμο αν κάνετε συχνά επανεγκατάσταση ή αν θέλετε να ξεκινάτε πάντα από την ίδια βάση. Δεν χρειάζεστε API ή τερματικό γι' αυτό.
Πού το συμπληρώνετε;
- Ανοίξτε την οθόνη του VPS μέσω της ενότητας Τα προϊόντα μου.
- Νέο VPS: βλέπετε την ενότητα Εγκατάσταση του VPS σας (δείτε Εγκατάσταση του VPS σας: λειτουργικό σύστημα, κωδικός πρόσβασης και κλειδί SSH). Επανεγκατάσταση: επιλέξτε την καρτέλα Για προχωρημένους και, στο Επανεγκατάσταση, κάντε κλικ στο Επανεγκατάσταση... (δείτε Επανεγκατάσταση ή σύνδεση ενός ISO).
- Επιλέξτε το λειτουργικό σύστημα και συμπληρώστε τον κωδικό πρόσβασης root και, προαιρετικά, το κλειδί SSH σας, όπως πάντα.
- Κάντε κλικ κάτω από το κλειδί SSH στο Δικό σας cloud-init. Το πεδίο ανοίγει.
- Επικολλήστε το αρχείο σας στο πεδίο.
- Κάντε κλικ στο κουμπί εγκατάστασης, για παράδειγμα Εγκατάσταση Debian 13, ή, σε επανεγκατάσταση, στο Διαγραφή όλων και επανεγκατάσταση.
Ο κωδικός πρόσβασης root ή το κλειδί SSH εξακολουθεί να χρειάζεται, ακόμη και με δικό σας cloud-init. Με αυτά μπορείτε πάντα να συνδεθείτε, και μέσω της κονσόλας (δείτε Η κονσόλα: ο VPS σας στον browser).
Τι μπορεί να περιέχει το αρχείο;
Το πεδίο δέχεται user-data, δηλαδή το αρχείο που διαβάζει το cloud-init κατά την πρώτη εκκίνηση. Η πρώτη γραμμή καθορίζει τι είναι:
| Πρώτη γραμμή | Τι είναι; |
|---|---|
#cloud-config | Ρυθμίσεις σε YAML: πακέτα, χρήστες, αρχεία, εντολές. Αυτό χρησιμοποιείτε συνήθως. |
#!, για παράδειγμα #!/bin/bash | Ένα script. Εκτελείται μία φορά ως root, στο τέλος της πρώτης εκκίνησης. |
#cloud-boothook | Ένα script που εκτελείται πολύ νωρίς κατά την εκκίνηση, ξανά σε κάθε εκκίνηση. Μόνο για προχωρημένους. |
## template: jinja | Ένα πρότυπο με μεταβλητές του cloud-init. Στην αμέσως επόμενη γραμμή υπάρχει τότε #cloud-config ή #!. |
- Έως 256 KB και μόνο κείμενο (UTF-8).
- Στο YAML κάνετε εσοχές με κενά διαστήματα, ποτέ με tabs.
- Το δίκτυο (IPv4 και IPv6) το ρυθμίζει η WebOké. Δικό σας network-config δεν χρησιμοποιείται· γι' αυτό μην προσθέτετε ρυθμίσεις δικτύου.
Ένα παράδειγμα
Αυτό το αρχείο ενημερώνει όλα τα πακέτα, εγκαθιστά τα htop και fail2ban, δημιουργεί τον χρήστη anna με το κλειδί SSH σας και sudo, δίνει στον server δικό του όνομα και ρυθμίζει σωστά τη ζώνη ώρας:
#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
Αντικαταστήστε το κλειδί με το δικό σας δημόσιο κλειδί (δείτε Δημιουργία κλειδιού SSH σε Windows, Mac και Linux). Η γραμμή - default διατηρεί τον προεπιλεγμένο χρήστη, ώστε ο κωδικός πρόσβασης root και το κλειδί SSH από τη φόρμα να εξακολουθούν να λειτουργούν κανονικά. Μετά την πρώτη εκκίνηση συνδέεστε με ssh anna@203.0.113.10. Πώς απενεργοποιείτε στη συνέχεια τη σύνδεση ως root και πώς ρυθμίζετε το fail2ban, διαβάστε στα Απενεργοποίηση σύνδεσης με κωδικό πρόσβασης και ως root και fail2ban κατά των προσπαθειών μαντέματος κωδικών.
Συμβουλή: Το παράδειγμα είναι για Debian και Ubuntu. Στα AlmaLinux και Rocky Linux τα htop και fail2ban βρίσκονται στην πρόσθετη πηγή EPEL. Εκεί παραλείψτε το packages και, κάτω από το runcmd, βάλτε πρώτα dnf install -y epel-release και μετά dnf install -y htop fail2ban.
Τι δίνει η ίδια η WebOké;
Η WebOké δίνει πάντα το hostname, τον κωδικό πρόσβασης root (μόνο ως hash) και το κλειδί SSH σας. Το δικό σας αρχείο συγχωνεύεται με αυτά. Αν ορίσετε εσείς users, password, chpasswd ή ssh_authorized_keys, οι δικές σας τιμές υπερισχύουν όσων δίνει η WebOké.
Προσοχή: Αν ορίσετε εσείς ssh_authorized_keys ή password στο ανώτατο επίπεδο του αρχείου σας, αυτά αντικαθιστούν το κλειδί και τον κωδικό πρόσβασης από τη φόρμα. Σε αυτή την περίπτωση προσθέστε εσείς το κλειδί με το οποίο θέλετε να συνδέεστε, διαφορετικά θα μπορείτε να συνδεθείτε μόνο μέσω της κονσόλας.
Πέτυχε;
Το cloud-init εκτελείται μία φορά, κατά την πρώτη εκκίνηση μετά την εγκατάσταση. Αυτό διαρκεί μερικές φορές λίγα λεπτά περισσότερο από την ίδια την εγκατάσταση, ειδικά αν εγκαθίστανται πακέτα. Συνδεθείτε και ελέγξτε:
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 --longεμφανίζειstatus: doneόταν όλα έχουν ολοκληρωθεί,runningόταν εκτελείται ακόμη καιerrorόταν κάτι πήγε στραβά, μαζί με το σφάλμα. Με τοcloud-init status --waitπεριμένετε μέχρι να ολοκληρωθεί. - Στο
/var/log/cloud-init-output.logβρίσκεται η έξοδος των πακέτων, των εντολών και των scripts σας. Περισσότερες λεπτομέρειες υπάρχουν στο/var/log/cloud-init.log. - Το
cloud-init schema --systemελέγχει το αρχείο σας για σφάλματα. Αν το YAML δεν είναι σωστό, το cloud-init παραλείπει τα τμήματα που δεν καταλαβαίνει, χωρίς να αποτύχει η εγκατάσταση.
Κάτι πήγε στραβά; Διορθώστε το χειροκίνητα στον server ή προσαρμόστε το αρχείο σας και κάντε επανεγκατάσταση. Λάβετε υπόψη ότι η επανεγκατάσταση διαγράφει τα πάντα στο VPS σας.
Καλό να γνωρίζετε
- Λειτουργεί για όλα τα λειτουργικά συστήματα της λίστας: Ubuntu 24.04 και 26.04, Debian 12 και 13, AlmaLinux 9 και 10 και Rocky Linux 9 και 10.
- Το αρχείο σας μεταφέρεται κρυπτογραφημένο και δεν αποθηκεύεται στο ιστορικό των εργασιών του VPS σας. Παρ' όλα αυτά, μην βάζετε σε αυτό κωδικούς πρόσβασης ή άλλα μυστικά που δεν χρειάζεστε.
- Όλες οι δυνατότητες περιγράφονται στην τεκμηρίωση του cloud-init στο docs.cloud-init.io.
Προσοχή: Το περιεχόμενο του cloud-init σας είναι δική σας ευθύνη. Η υποστήριξη δεν εξετάζει το αρχείο σας και δεν βοηθά στη σύνταξη ή τη βελτίωσή του.
