Η δημιουργία μιας εικονικής μηχανής είναι βαρετή. Η δημιουργία εκατοντάδων είναι χρονοβόρα. Το cloud-init σάς επιτρέπει να αυτοματοποιήσετε τη δημιουργία εικονικής μηχανής στο Microsoft Azure.
Εάν έχετε δημιουργήσει ποτέ μια εικονική μηχανή, ξέρετε πώς λειτουργεί. Κάνετε κλικ εδώ κι εκεί, κάντε κλικ στο δρόμο σας λίγο ακόμα και στο τέλος, έχετε ρυθμίσει ένα σύστημα. Αλλά τότε πρέπει να εγκαταστήσετε λογισμικό και να ρυθμίσετε τις παραμέτρους του VM σύμφωνα με τις προτιμήσεις σας.
Τώρα φανταστείτε ότι θέλετε να ρυθμίσετε εκατοντάδες VM. Το να κάνετε κλικ στην εγκατάσταση δεν είναι τόσο αποτελεσματικό. Αντίθετα, πρέπει να αυτοματοποιήσετε τη διαδικασία όσο το δυνατόν περισσότερο, και εκεί έρχεται το cloud-init.
Ας ρίξουμε μια ματιά στο πώς μπορείτε να αυτοματοποιήσετε την εγκατάσταση του λειτουργικού συστήματος και τη διαμόρφωση εικονικής μηχανής χρησιμοποιώντας το cloud-init στο Microsoft Azure.
Γιατί να χρησιμοποιήσετε το cloud-init για να αυτοματοποιήσετε τη δημιουργία VM;
Το cloud-init είναι ένα ισχυρό εργαλείο αυτοματισμού ανάπτυξης που αναπτύσσει η Canonical, η εταιρεία πίσω από το Ubuntu.
Με το cloud-init, μπορείτε να εγκαταστήσετε και να αναπτύξετε λειτουργικά συστήματα Linux και να διαμορφώσετε άλλες πτυχές ενός VM. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το cloud-init για να ρυθμίσετε λογαριασμούς χρηστών, να εγκαταστήσετε και να διαμορφώσετε λογισμικό, να προσθέσετε κλειδιά SSH, όπως εσείς θέλετε.
Προς το παρόν, η πλειοψηφία των παρόχων υπηρεσιών cloud, όπως οι Azure, Linode και Amazon Web Services (AWS) υποστηρίζουν το cloud-init.
Αν και το cloud-init ξεκίνησε στο Ubuntu, τώρα υποστηρίζει όλες τις μεγάλες διανομές Linux, όπως το openSUSE, το Debian, το Red Hat Enterprise Linux (RHEL) κ.λπ.
Εκτός από την ανάπτυξη λογισμικού στο cloud, μπορείτε επίσης να χρησιμοποιήσετε το cloud-init για να διαμορφώσετε και να εγκαταστήσετε λογισμικό σε διακομιστές on-prem ή εικονικά περιβάλλοντα όπως το VirtualBox, το KVM και το VMware.
Θα χρησιμοποιήσουμε την πλατφόρμα cloud Microsoft Azure για να αυτοματοποιήσουμε την ανάπτυξη ενός διακομιστή Ubuntu χρησιμοποιώντας το cloud-init.
Βήμα 1: Δημιουργία σεναρίου σε σύννεφο
Τα σενάρια cloud-init χρησιμοποιούν μονάδες για τη διαμόρφωση διαφορετικών πτυχών του συστήματός σας. Για παράδειγμα, θα χρησιμοποιήσετε το χρήστες λειτουργική μονάδα για τη διαμόρφωση πληροφοριών και λογαριασμών χρηστών και συρματοφύλακας μονάδα για τη διαμόρφωση του WireGuard κ.λπ. Υπάρχουν τόνοι άλλων μονάδων που μπορείτε να χρησιμοποιήσετε εκτός συσκευασίας.
Ας δημιουργήσουμε ένα σενάριο cloud-init για να αυτοματοποιήσουμε τα περισσότερα από τα πράγματα που διαμορφώνετε κατά τη ρύθμιση μιας νέας εικονικής μηχανής.
Θα δημιουργήσουμε έναν χρήστη με το όνομα "mwiza" και θα του εκχωρήσουμε έναν κωδικό πρόσβασης. Για απλότητα, ας χρησιμοποιήσουμε έναν κωδικό πρόσβασης απλού κειμένου, αλλά μπορείτε να τον κρυπτογραφήσετε εάν το θέλετε. Επιπλέον, προσθέστε το κλειδί SSH του χρήστη σε εξουσιοδοτημένα κλειδιά. Αυτό σας επιτρέπει να απενεργοποιήσετε αργότερα τις συνδέσεις με κωδικό πρόσβασης SSH για καλύτερη ασφάλεια.
Εκτός από τη δημιουργία νέου χρήστη, το σενάριο πρέπει να κάνει τα εξής:
- Γράφοντας ένα αρχείο: Δημιουργήστε ένα απλό αρχείο και γράψτε περιεχόμενο σε αυτό χρησιμοποιώντας το write_files μονάδα μέτρησης. Το αρχείο θα τοποθετηθεί στον αρχικό κατάλογο. Μπορείτε να χρησιμοποιήσετε τις ίδιες έννοιες για τη δημιουργία πιο περίπλοκων αρχείων στο μέλλον.
- Εντολές εκτέλεσης: Θα εκτελέσουμε απλές εντολές για τη διαμόρφωση του τείχους προστασίας UFW, αλλά θα μπορούσε να είναι οποιαδήποτε άλλη εντολή Linux. Χρησιμοποιήστε το runcmd μονάδα για εκτέλεση οποιασδήποτε εντολής της επιλογής σας. είναι παρόμοιο με την εκτέλεση εντολών Linux από εκτέλεση σεναρίων Bash.
- Διαμόρφωση τοπικών ρυθμίσεων: Αυτό ορίζει τις προτιμώμενες τοπικές ρυθμίσεις σας, όπως τη διάταξη πληκτρολογίου, την προτιμώμενη γλώσσα, τη ζώνη ώρας κ.λπ.
- Εγκατάσταση πακέτων: Χρησιμοποιήστε τον αγαπημένο σας διαχειριστή πακέτων για να εγκαταστήσετε πακέτα στο σύστημά σας. Για παράδειγμα, σε συστήματα που βασίζονται στο Debian, μπορείτε να χρησιμοποιήσετε το APT.
Αυτές είναι μόνο μερικές από τις ενότητες που μπορείτε να χρησιμοποιήσετε από το cloud-init. υπάρχουν πολλές άλλες ενότητες εκεί έξω για την αυτοματοποίηση όλων των ειδών των πραγμάτων.
Εδώ είναι το πλήρες σενάριο cloud-init για τη διαμόρφωση του νέου λογαριασμού χρήστη. Θυμηθείτε να αντικαταστήσετε το κλειδί SSH με το σωστό. Επίσης, μη διστάσετε να αλλάξετε το όνομα χρήστη και οποιαδήποτε άλλη λεπτομέρεια.
vim: σύνταξη=yaml
# Προσθήκη χρηστών συστήματος εδώ
χρήστες:
- όνομα: mwiza
ομάδες: χρήστες, sudo
κέλυφος: /bin/bash
gecos: mwiza
plain_text_passwd: Live-laugh-love12345G123
lock_passwd: ψευδής
ssh_authorized_keys:
- ssh-ed25519 BSHSDSD3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]# Εγκατάσταση, ενημέρωση και αναβάθμιση πακέτων
πακέτο_αναβάθμισης: αληθές
πακέτο_ενημέρωση: αληθές
package_reboot_if_require: trueπακέτα:
- traceroute
- δικτυωτά εργαλεία
- fail2ban# Ορίστε τοπικές ρυθμίσεις
τοπική τοποθεσία: en_UK
ζώνη ώρας: Etc/UTC
πληκτρολόγιο:
διάταξη: nbwrite_files:
- διαδρομή: /etc/salt/minion.d/master_ip_port.conf
περιεχόμενο: |
κύριος: αλάτι
master_port: 4506
public_port: 4505
- διαδρομή: /home/mwiza/cloud-init.txt
περιεχόμενο: |
που δημιουργήθηκε από το cloud-init στο azure# Εκτέλεση εντολών Bash για διαμόρφωση λογισμικού και υπηρεσιών
runcmd:
- Ενεργοποίηση ufw
- ufw επιτρέψτε ssh
- ufw επιτρέπω 80
- systemctl ενεργοποιήστε το ufw
# Απενεργοποιήστε το VM αφού ολοκληρωθεί η προετοιμασία
διακοπή λειτουργίας: απενεργοποίηση
Το σενάριο cloud-init χρησιμοποιεί YAML, επομένως βεβαιωθείτε ότι η εσοχή είναι σωστή διαφορετικά, δεν θα λειτουργήσει όπως αναμένεται.
Βήμα 2: Δημιουργία του πόρου της εικονικής μηχανής
Το επόμενο βήμα είναι να δημιουργήσετε τον απαραίτητο πόρο στο Azure για την εικονική μηχανή. Συνδεθείτε στο Azure εάν έχετε ήδη λογαριασμό ή δημιουργήστε έναν δωρεάν δοκιμαστικό λογαριασμό μεταβαίνοντας στο azure.microsoft.com.
Στην αρχική σελίδα της πύλης Azure, κάντε κλικ στο Δημιουργήστε έναν πόρο κουμπί. Από τη λίστα με τις πιο δημοφιλείς υπηρεσίες Azure, επιλέξτε Εικονική μηχανή.
Η επόμενη σελίδα σάς δίνει πληροφορίες για τη δημιουργία πόρων VM όπως σκληρός δίσκος, δικτύωση κ.λπ.
Δώστε στην εικονική μηχανή σας ένα ουσιαστικό όνομα και επιλέξτε την περιοχή ανάπτυξης. Επίσης, δημιουργήστε μια ομάδα πόρων για το VM σας ή χρησιμοποιήστε μια υπάρχουσα.
Σύμφωνα με το Αυθεντικοποίηση πληκτρολογήστε, επιλέξτε το Κωδικός πρόσβασης και δώστε το όνομα χρήστη και τον ισχυρό κωδικό πρόσβασής σας.
Αφού συμπληρώσετε όλα τα πεδία σε αυτήν τη σελίδα, τα στοιχεία σας θα πρέπει να είναι παρόμοια με τα παρακάτω.
Βήμα 3: Προσθήκη του σεναρίου σας στο cloud-init
Στη συνέχεια, κάντε κλικ στο Προχωρημένος καρτέλα για να προσθέσετε το σενάριο του cloud-init. Αντιγράψτε και επικολλήστε το σενάριο του cloud-init από το πρώτο βήμα στο προσαρμοσμένο πεδίο δεδομένων.
Τέλος, κάντε κλικ στο Αναθεώρηση + δημιουργία κουμπί. Αν όλα είναι εντάξει, το τεστ θα περάσει. Διαφορετικά, ο δημιουργός του Azure VM θα σας καθοδηγήσει στις διορθώσεις που πρέπει να κάνετε.
Βήμα 4: Σύνδεση στην εικονική σας μηχανή
Χρησιμοποιήστε τις πληροφορίες επισκόπησης VM για να λάβετε τη δημόσια διεύθυνση IP της εικονικής σας μηχανής και να συνδεθείτε μέσω SSH. Εάν χρησιμοποιήσατε το σωστό κλειδί SSH, το σύστημα δεν θα σας ζητήσει να εισαγάγετε τον κωδικό πρόσβασης χρήστη.
Μόλις συνδεθείτε, μπορείτε να ελέγξετε ότι τα αρχεία που θέλετε να δημιουργήσετε μέσω του σεναρίου είναι εκεί. Επίσης, αναζητήστε εγκατεστημένα πακέτα με APT και ελέγξτε ότι το τείχος προστασίας έχει ρυθμιστεί σωστά χρησιμοποιώντας το κατάσταση sudo ufw εντολή.
Το cloud-init καταγράφει επίσης σημαντικές πληροφορίες στο /var/log/cloud-init.log αρχείο. Περιέχει αναλυτικά μηνύματα όλων των γεγονότων που συνέβησαν κατά την προετοιμασία του cloud-init. Μπορείτε να ελέγξετε αυτό το αρχείο χρησιμοποιώντας την εντολή cat ως εξής:
cat /var/log/cloud-init.log
Αυτοματοποιήστε τη δημιουργία εικονικής μηχανής με το cloud-init
Το cloud-init είναι ένα ισχυρό εργαλείο που σας βοηθά να αυτοματοποιήσετε την εγκατάσταση και τη ρύθμιση του Linux. Μπορείτε να το χρησιμοποιήσετε στο cloud και σε διακομιστές on-prem. Είτε θέλετε απλώς να αυτοματοποιήσετε την ανάπτυξη της εικονικής μηχανής σας είτε χρειάζεται να αναπτύξετε διακομιστές Linux σε μεγάλη κλίμακα, το cloud-init είναι μια εξαιρετική επιλογή.
Σε μια σχετική σημείωση, προστατεύετε πάντα τις συνδέσεις SSH για τις εικονικές μηχανές σας που βασίζονται σε σύννεφο για να αποφύγετε παραβιάσεις ασφαλείας.