Esercizio - Creare uno script cloud-init da usare con Azure CycleCloud
Quando si effettua il provisioning dei nodi per un cluster, potrebbe essere necessario essere in grado di eseguire attività di configurazione personalizzate durante il processo di avvio del sistema operativo, prima che le modifiche guidate dall'utilità di pianificazione siano effettive. Queste attività possono includere, ad esempio, l'aggiornamento delle variabili di ambiente del percorso, la configurazione delle impostazioni di risoluzione dei nomi DNS (Domain Name System) o l'associazione di nodi a un dominio di Microsoft Entra Domain Services (AD DS).
Per implementare questa funzionalità, si decide di esplorare l'uso di cloud-init nei cluster Azure CycleCloud e testarlo con un semplice script Bash che modifica il contenuto di un file locale in ogni nodo. Si intende convalidare il risultato connettendosi ai nodi del cluster ed esaminando il contenuto dei file modificati.
Annotazioni
Quando si creano script cloud-init, è possibile usare qualsiasi metodo di scripting o configurazione che il sistema operativo in esecuzione nei nodi di destinazione possa riconoscere ed elaborare, tra cui lo scripting della shell tradizionale, Python e YAML.
In questo esercizio verranno eseguite le attività seguenti:
- Attività 1: Configurare l'autenticazione basata su SSH nei nodi del cluster Azure CycleCloud
- Attività 2: Aggiungere uno script cloud-init ai nodi del cluster
- Attività 3: Verificare la funzionalità cloud-init nel nodo del pianificatore
- Attività 4: Verificare la funzionalità cloud-init nei nodi di calcolo
- Attività 5: Pulire l'ambiente di esercizio
Annotazioni
Assicurarsi di aver completato l'esercizio precedente prima di iniziare questo esercizio.
Attività 1: Configurare l'autenticazione basata su SSH nei nodi del cluster Azure CycleCloud
Per convalidare l'esecuzione degli script cloud-init, ci si connetterà ai nodi del cluster con l'interfaccia della riga di comando di Azure CycleCloud da Azure Cloud Shell. Questa connessione si basa sull'autenticazione basata su chiave SSH, quindi è necessario caricare la chiave privata corrispondente alla chiave pubblica distribuita ai nodi del cluster nella home directory di Azure Cloud Shell.
Passare al portale di Azure e, quando richiesto, eseguire l'autenticazione con un account Microsoft o un account Microsoft Entra con il ruolo Collaboratore o Proprietario nella sottoscrizione di Azure in uso in questo modulo.
Dal portale di Azure aprire Cloud Shell selezionandone l'icona nella barra degli strumenti accanto alla casella di ricerca e assicurarsi di eseguire una sessione Bash.
Nel riquadro Azure Cloud Shell , nella barra degli strumenti del riquadro, selezionare la quarta icona che visualizza una pagina con una coppia di frecce verticali che puntano nelle direzioni opposte. Quindi, nel menu a discesa selezionare Carica.
Nella finestra di dialogo Apri passare al percorso del file con estensione pem contenente la chiave privata e selezionare Apri.
Eseguire i comandi seguenti in Cloud Shell per spostare il file con estensione pem caricato nel percorso corretto e configurare le autorizzazioni necessarie a livello di file (sostituire il
<private_key.pem>segnaposto con il nome del file pem ):mkdir -p ~/.ssh mv private_key.pem ~/.ssh chmod 600 ~/.ssh/cc-ssh-keys.pem
Attività 2: Aggiungere uno script cloud-init ai nodi del cluster
L'opzione per aggiungere script ai nodi del cluster è disponibile direttamente dall'interfaccia grafica di Azure CycleCloud. Verrà usato per assegnare lo stesso script cloud-init ai nodi di pianificazione e di calcolo e verificare la relativa funzionalità. Lo script aggiunge una voce 10.10.10.10 cc.contoso.com al file /etc/hosts .
Se non si è ancora connessi all'applicazione Web Azure CycleCloud, aprire un'altra finestra del browser e passare all'URL https://< IP_address> . Se viene richiesto, confermare di voler continuare.
Se viene richiesto di eseguire l'autenticazione, accedere specificando le credenziali dell'account utente dell'applicazione Azure CycleCloud con il ruolo Amministratore.
Nell'interfaccia grafica di Azure CycleCloud passare alla pagina Cluster. Nell'elenco dei cluster selezionare la voce contoso-custom-slurm-lab-cluster e quindi selezionare Modifica.
Nella finestra di dialogo Edit contoso-custom-slurm-lab-cluster (Modifica contoso-custom-slurm-lab-cluster), selezionare l'elemento Cloud-init e nella scheda scheduler della sezione Configurazione di Cloud-init immettere il seguente script:
#!/bin/bash echo "10.10.10.10 www.contoso.com" >> /etc/hosts
Nella stessa finestra popup, con la voce Cloud-init selezionata, selezionare ognuna delle schede rimanenti (tra cui cuda, hpc e htc) e immettere lo stesso script. Selezionare Salva.
Attività 3: Verificare la funzionalità cloud-init nel nodo del pianificatore
Per verificare la funzionalità cloud-init nel nodo del pianificatore, avvierai il cluster. Verrà attivato il provisioning del nodo dell'utilità di pianificazione. Dopo l'esecuzione del nodo, sarà possibile connettersi a esso da Azure Cloud Shell e verificare che il file /etc/hosts contenga la voce 10.10.10.10.10 www.contoso.com.
Nella finestra del browser che visualizza l'applicazione Web Azure CycleCloud, selezionare il collegamento Start nella pagina contoso-custom-slurm-lab-cluster. Quando viene richiesto di confermare, selezionare OK.
Annotazioni
Se il cluster è già in esecuzione, sarà necessario terminarlo e riavviarlo per applicare la configurazione aggiornata, altrimenti tale configurazione non sarà visibile nei passaggi successivi.
Nell'elenco dei nodi selezionare la voce Utilità di pianificazione e monitorarne lo stato nel riquadro Dettagli , in attesa che cambi da Acquisizione a Pronto.
Annotazioni
Possono essere necessari circa tre minuti.
Nel riquadro Dettagli selezionare Connetti. Nella finestra popup Connetti al nodo: scheduler, nella sezione Utilizzo dell'interfaccia a riga di comando di CycleCloud, selezionare la voce che contiene il comando per connettersi al nodo scheduler e selezionare Chiudi:
Annotazioni
Il comando deve avere il formato
cyclecloud connect scheduler -c contoso-custom-slurm-lab-clusterPassare alla finestra del Web browser con il riquadro Cloud Shell ed eseguire il comando copiato nel passaggio precedente.
Annotazioni
Il comando deve generare l'output nel formato seguente:
m@Azure:~$ cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster Connecting to cc-admin@40.87.52.25 (contoso-custom-slurm-lab-cluster scheduler) using SSH [cc-admin@ip-0A000304 ~]$Quando si è connessi al nodo dell'utilità di pianificazione, eseguire il comando seguente per verificare che il file /etc/hosts contenga la voce 10.10.10.10.10
www.contoso.com:grep "10.10.10.10 www.contoso.com" /etc/hostsAnnotazioni
Il comando deve generare l'output nel formato seguente:
[cc-admin@ip-0A000304 ~]$ grep "10.10.10.10 www.contoso.com" /etc/hosts 10.10.10.10 www.contoso.com
Attività 4: Verificare la funzionalità cloud-init nei nodi di calcolo
A questo punto, si ripeterà la sequenza equivalente di passaggi per verificare la funzionalità cloud-init nei nodi di calcolo.
Importante
Prima di poter applicare la procedura equivalente per verificare la funzionalità cloud-init nei nodi di calcolo, è necessario rimuovere e riallocare il set di scalabilità di macchine virtuali corrispondente. Questo passaggio è specifico per i cluster basati su Slurm perché, in questo caso, l'integrazione della scalabilità automatica dell'utilità di pianificazione richiede ad Azure CycleCloud di prepopopolare i nodi di calcolo. Di conseguenza, la configurazione di cloud-init applicata in precedenza in questo esercizio non influisce sui nodi già esistenti.
Durante la connessione al nodo dell'utilità di pianificazione, eseguire i comandi seguenti in Cloud Shell per rimuovere e riallocare i nodi di calcolo nel cluster Azure CycleCloud e terminare la connessione al nodo dell'utilità di pianificazione:
sudo -i cd /opt/cycle/jetpack/system/bootstrap/slurm ./cyclecloud_slurm.sh remove_nodes ./cyclecloud_slurm.sh scale exit exitAnnotazioni
Verranno visualizzati i messaggi che indicano Tentativo di rimuovere i nodi seguenti seguiti dal completamento del ridimensionamento del cluster al termine di questo passaggio.
Sul tuo computer, passa alla finestra del web browser che visualizza la pagina contoso-custom-slurm-lab-cluster dell'applicazione web Azure CycleCloud. Nella scheda Nodi selezionare la riga htc e nel riquadro Dettagli selezionare la voce htc-1 , quindi selezionare l'intestazione della scheda Azioni . Nel menu a discesa selezionare Start e selezionare OK quando viene richiesto di confermare.
Nel riquadro Dettagli monitorare il nodo appena avviato e attendere che lo stato cambi da Acquisizione a Pronto.
Annotazioni
Possono essere necessari circa tre minuti.
Nel riquadro Dettagli selezionare Connetti. Nella finestra Connetti al nodo: htc-1 del popup, selezionare la voce nella sezione Utilizzando l'interfaccia a riga di comando di CycleCloud, che contiene il comando per connettersi al nodo del pianificatore, e quindi selezionare Chiudi:
Annotazioni
Il comando deve avere il formato
cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.Passare al riquadro Cloud Shell ed eseguire il comando copiato nel passaggio precedente.
Annotazioni
Il comando deve generare l'output nel formato seguente:
m@Azure:~$ cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster Connecting to cc-admin@10.0.3.5 (contoso-custom-slurm-lab-cluster htc-1) through SSH bastion at cc-admin@40.87.52.25 [cc-admin@ip-0A000305 ~]$Quando si è connessi al nodo htc-1 , eseguire il comando seguente per verificare che il file /etc/hosts contenga la voce 10.10.10.10.10
www.contoso.com:cat /etc/hosts | grep "10.10.10.10 www.contoso.com"Annotazioni
È consigliabile eliminare tutte le risorse distribuite in questo e gli esercizi precedenti di questo modulo dopo aver raggiunto questo punto. In questo modo è possibile evitare gli addebiti associati alla gestione di queste risorse nella sottoscrizione di Azure.
Attività 5: Pulire l'ambiente lab
Il test della personalizzazione del cluster tramite l'applicazione Azure CycleCloud è stato completato. Per evitare costi non necessari associati all'uso delle risorse di Azure, si terminerà ora il cluster e si rimuoveranno tutte le risorse di cui è stato effettuato il provisioning durante gli esercizi di questo modulo.
Nel Web browser in cui è visualizzata l'interfaccia grafica dell'applicazione Web Azure CycleCloud, nella pagina contoso-custom-slurm-lab-cluster selezionare il collegamento Termina e, quando viene chiesta conferma, selezionare OK.
Monitorare il processo di terminazione.
Annotazioni
Il processo comporta il deprovisioning della macchina virtuale di Azure che funge da nodo principale del cluster. Possono essere necessari circa cinque minuti.
Annotazioni
Per eliminare tutte le altre risorse di cui è stato effettuato il provisioning in questo lab, si elimineranno i gruppi di risorse che ospitano le risorse del cluster.
Nel portale di Azure passare al pannello del gruppo di risorse che ospita le risorse del cluster, selezionare la voce Elimina gruppo di risorse sulla barra degli strumenti. Nella casella di testo Immettere il nome del gruppo di risorse per confermare l'eliminazione immettere il nome del gruppo di risorse e selezionare Elimina. Selezionare di nuovo Elimina per confermare l'eliminazione.
Annotazioni
Potrebbero essere presenti gruppi di risorse aggiuntivi associati alle risorse Slurm. Per evitare costi aggiuntivi, assicurarsi di eliminare tutti questi gruppi di risorse correlati a Slurm e le relative risorse.
Congratulazioni! Il terzo e ultimo esercizio di questo modulo è stato completato correttamente. In questo esercizio è stato esaminato l'uso di cloud-init nei cluster Azure CycleCloud e ne è stato testato il test con uno script Bash semplice che ha modificato il contenuto di un file locale in ogni nodo. Il risultato è stato convalidato connettendosi ai nodi del cluster ed esaminando il contenuto dei file modificati. Dopo, hai terminato il cluster e hai eliminato tutte le risorse del cluster utilizzate in questo modulo per evitare costi non necessari.