Creare una macchina virtuale è noioso. La creazione di centinaia richiede tempo. cloud-init consente di automatizzare la creazione di macchine virtuali in Microsoft Azure.
Se hai mai configurato una macchina virtuale, sai come funziona. Fai clic qua e là, fai ancora clic sulla tua strada e, alla fine, hai un sistema configurato. Ma poi devi ancora installare il software e configurare la VM secondo le tue preferenze.
Ora immagina di voler configurare centinaia di macchine virtuali. Fare clic sull'installazione non è così efficace. Invece, devi automatizzare il processo il più possibile, ed è qui che entra in gioco cloud-init.
Diamo un'occhiata a come automatizzare l'installazione del sistema operativo e la configurazione della macchina virtuale utilizzando cloud-init in Microsoft Azure.
Perché utilizzare cloud-init per automatizzare la creazione di VM?
cloud-init è un potente strumento di automazione della distribuzione sviluppato da Canonical, la società dietro Ubuntu.
Con cloud-init, puoi installare e distribuire sistemi operativi Linux e configurare altri aspetti di una VM. Ad esempio, puoi utilizzare cloud-init per impostare account utente, installare e configurare software, aggiungere chiavi SSH, lo chiami.
Al momento, la maggior parte dei provider di servizi cloud come Azure, Linode e Amazon Web Services (AWS) supporta cloud-init.
Sebbene cloud-init sia iniziato su Ubuntu, ora supporta tutte le principali distribuzioni Linux, come openSUSE, Debian, Red Hat Enterprise Linux (RHEL), ecc.
Oltre a distribuire software nel cloud, puoi anche utilizzare cloud-init per configurare e installare software su server on-prem o ambienti virtuali come VirtualBox, KVM e VMware.
Useremo la piattaforma cloud Microsoft Azure per automatizzare la distribuzione di un server Ubuntu utilizzando cloud-init.
Passaggio 1: creazione di uno script cloud-init
Gli script cloud-init utilizzano moduli per configurare diversi aspetti del sistema. Ad esempio, utilizzerai il utenti modulo per configurare le informazioni e gli account degli utenti e il wireguard modulo per la configurazione di WireGuard, ecc. Ci sono un sacco di altri moduli che puoi usare fuori dalla scatola.
Creiamo uno script cloud-init per automatizzare la maggior parte delle cose che configuri quando imposti una nuova macchina virtuale.
Creeremo un utente chiamato "mwiza" e gli assegneremo una password. Per semplicità, usiamo una password in testo semplice, ma puoi crittografarla se lo desideri. Inoltre, aggiungi la chiave SSH dell'utente alle chiavi autorizzate. Ciò consente di disabilitare gli accessi con password SSH in un secondo momento per una maggiore sicurezza.
Oltre a creare un nuovo utente, lo script dovrebbe eseguire le seguenti operazioni:
- Scrivere un file: Crea un file semplice e scrivici il contenuto utilizzando l'estensione write_files modulo. Il file verrà inserito nella home directory. È possibile utilizzare gli stessi concetti per creare file più complessi in futuro.
- Comandi in esecuzione: Eseguiremo semplici comandi per configurare il firewall UFW, ma potrebbe essere qualsiasi altro comando Linux. Utilizza il runcmd modulo per eseguire qualsiasi comando a tua scelta; è simile all'esecuzione di comandi Linux di esecuzione di script Bash.
- Configurazione delle impostazioni locali: Questo imposta le tue impostazioni locali preferite come il layout della tastiera, la lingua preferita, il fuso orario, ecc.
- Installa i pacchetti: Usa il tuo gestore di pacchetti preferito per installare i pacchetti sul tuo sistema. Ad esempio, su sistemi basati su Debian, puoi usare APT.
Questi sono solo alcuni dei moduli che puoi utilizzare da cloud-init; ci sono molti altri moduli là fuori per automatizzare ogni genere di cose.
Ecco lo script cloud-init completo per configurare il nuovo account utente. Ricordati di sostituire la chiave SSH con quella corretta. Inoltre, sentiti libero di cambiare il nome utente e qualsiasi altro dettaglio.
vim: sintassi=yaml
# Aggiungi qui gli utenti del sistema
utenti:
- nome: mwiza
gruppi: utenti, sudo
shell: /bin/bash
gecos: mwiza
plain_text_passwd: Live-laugh-love12345G123
lock_passwd: falso
ssh_authorized_keys:
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]# Installa, aggiorna e aggiorna i pacchetti
pacchetto_aggiornamento: vero
aggiornamento_pacchetto: vero
package_reboot_if_require: veroPacchetti:
- traccia percorso
- strumenti di rete
- fail2ban# Imposta le impostazioni locali
locale: en_UK
fuso orario: Ecc/UTC
tastiera:
disposizione: n.bwrite_files:
- percorso: /etc/salt/minion.d/master_ip_port.conf
contenuto: |
maestro: sale
master_port: 4506
pubblica_porta: 4505
- percorso: /home/mwiza/cloud-init.txt
contenuto: |
creato da cloud-init in Azure# Esecuzione di comandi Bash per configurare software e servizi
runcmd:
- abilitazione ufw
- ufw consenti ssh
- ufw consenti 80
- systemctl abilita ufw
# Spegnere la VM al termine dell'inizializzazione
spegnimento: spegnimento
Lo script cloud-init utilizza YAML, quindi assicurati che il rientro sia corretto altrimenti non funzionerà come previsto.
Passaggio 2: creazione della risorsa della macchina virtuale
Il passaggio successivo consiste nel creare la risorsa necessaria in Azure per la macchina virtuale. Accedi ad Azure se disponi già di un account oppure crea un account di prova gratuito andando su azure.microsoft.com.
Nella home page del portale di Azure fare clic su Crea una risorsa pulsante. Selezionare dall'elenco dei servizi di Azure più popolari Macchina virtuale.
La pagina successiva fornisce informazioni per la creazione di risorse VM come disco rigido, rete, ecc.
Assegna alla tua macchina virtuale un nome significativo e seleziona l'area di distribuzione. Inoltre, crea un gruppo di risorse per la tua VM o usane uno esistente.
Sotto il Autenticazione digitare, selezionare il Parola d'ordine opzione e fornire il nome utente e la password sicura.
Dopo aver compilato tutti i campi di questa pagina, i tuoi dettagli dovrebbero essere simili ai seguenti.
Passaggio 3: aggiunta dello script cloud-init
Quindi, fare clic su Avanzate scheda per aggiungere lo script cloud-init. Copia e incolla lo script cloud-init dal primo passaggio nel campo dati personalizzato.
Infine, fai clic sul Rivedi + crea pulsante. Se tutto va bene, il test passerà. In caso contrario, il creatore di Azure VM ti guiderà sulle correzioni da apportare.
Passaggio 4: accesso alla macchina virtuale
Utilizza le informazioni sulla panoramica della VM per ottenere l'indirizzo IP pubblico della tua macchina virtuale e accedi tramite SSH. Se hai utilizzato la chiave SSH corretta, il sistema non ti chiederà di inserire la password utente.
Una volta effettuato l'accesso, puoi verificare che i file che volevi creare tramite lo script siano presenti. Anche, cerca i pacchetti installati con APT e verificare che il firewall sia stato configurato correttamente utilizzando il file stato sudo ufw comando.
cloud-init registra anche informazioni importanti nel file /var/log/cloud-init.log file. Contiene messaggi dettagliati di tutti gli eventi che si sono verificati durante l'inizializzazione di cloud-init. Puoi controllare questo file usando il comando cat come segue:
cat /var/log/cloud-init.log
Automatizza la creazione di macchine virtuali con cloud-init
cloud-init è un potente strumento che ti aiuta ad automatizzare l'installazione e la configurazione di Linux. Puoi usarlo nel cloud e sui server on-prem. Sia che tu voglia solo automatizzare la distribuzione della tua macchina virtuale o che tu abbia bisogno di distribuire server Linux su larga scala, cloud-init è un'ottima scelta.
In una nota correlata, proteggi sempre i tuoi accessi SSH per le tue macchine virtuali basate su cloud per evitare violazioni della sicurezza.