Personalizzare le installazioni software

Completato

I modelli di Azure CycleCloud facilitano la configurazione dei cluster HPC astraendo i dettagli di implementazione dell'infrastruttura sottostante e lasciando così l'utente libero di concentrarsi sulla gestione del carico di lavoro. Il carico di lavoro, tuttavia, in genere presenta diverse dipendenze correlate al software, che richiedono passaggi di personalizzazione aggiuntivi. Fortunatamente, Azure CycleCloud fornisce anche un framework per l'implementazione di questi passaggi tramite il supporto per le attività di provisioning e gestione della configurazione applicate direttamente ai nodi del cluster.

Gli obiettivi includono la necessità di distribuire immagini personalizzate e di usare script di configurazione sviluppati internamente in uso nell'ambiente HPC locale. Si vuole determinare come usare le funzionalità di Azure CycleCloud per raggiungere questi obiettivi.

Come si implementa la gestione della configurazione con Azure CycleCloud?

Azure CycleCloud offre tre metodi principali che è possibile combinare in modo arbitrario per personalizzare il sistema operativo e il software nei nodi del cluster in base alle esigenze o ai requisiti specifici:

  • Immagini personalizzate
  • Progetti
  • cloud-init

Come si usano le immagini personalizzate con Azure CycleCloud?

Azure CycleCloud supporta i nodi del cluster che eseguono le distribuzioni Linux più comuni e, a seconda dell'utilità di pianificazione, Windows Server. I modelli predefiniti sono preconfigurati con le impostazioni predefinite consigliate, ma è possibile scegliere immagini di Azure Marketplace o effettuare il provisioning di nodi basati su immagini personalizzate. Quest'ultima opzione è preferibile per ridurre al minimo i ritardi associati alla configurazione post-distribuzione del sistema operativo e alle eventuali dipendenze aggiuntive dei carichi di lavoro HPC. Può anche essere necessario scegliere tale opzione per soddisfare le esigenze aziendali, di sicurezza o di conformità.

Le immagini personalizzate consentono di avere il controllo completo sul software preinstallato e sulla configurazione iniziale del sistema operativo. Il principale svantaggio è il sovraccarico associato alla gestione di più immagini per supportare diverse combinazioni di applicazioni e le relative versioni, in particolare negli scenari di sviluppo.

Come si usano i progetti di Azure CycleCloud per l'installazione del software?

Un progetto di Azure CycleCloud è una raccolta di file a cui si fa riferimento quando si definiscono le configurazioni dei nodi del cluster tramite modelli. I progetti hanno la struttura di directory seguente:

\project
      |- project.ini
      |- blobs
      |- templates
      |- specs
      |      | 
      |    default
      |      |- cluster-init
      |            |- scripts
      |            |- files
      |            |- tests
      |      | - chef
      |            |- site-cookbooks
      |            |- data_bag
      |            |- roles

Il file project.ini contiene i metadati del progetto, inclusi il nome, l'etichetta, la versione e il tipo. I tipi supportati includono utilità di pianificazione e applicazione. Il primo tipo viene usato per installare e inizializzare i daemon dell'utilità di pianificazione nei nodi head e nei nodi di calcolo, mentre il secondo definisce i carichi di lavoro del cluster.

La directory blobs contiene i BLOB del progetto, ad esempio i file binari per un progetto open source che è possibile ridistribuire liberamente, e i BLOB utente, che devono essere esclusi dalla ridistribuzione del progetto a causa di vincoli di licenza.

La directory templates contiene i modelli, mentre la directory specs ospita le specifiche che definiscono le configurazioni da applicare ai nodi del cluster di destinazione.

Nota

Un progetto Slurm contiene ad esempio almeno due specifiche: una per i nodi head dell'utilità di pianificazione e una per i nodi di calcolo.

Nella directory specs sono presenti due sottodirectory, una denominata cluster-init e una denominata custom Chef. Cluster-init contiene script eseguiti automaticamente nel nodo di destinazione. File di dati non elaborati copiati nel nodo di destinazione e test che verranno eseguiti quando un cluster viene avviato in modalità di test. La sottodirectory chef personalizzata contiene file specifici di Chef, tra cui file di definizione di ruoli, contenitori di dati e cookbook. È possibile usare i cookbook e le ricette Chef per la configurazione dei nodi. Le specifiche di cluster-init sono mappate ai ruoli e ai cookbook di Chef.

Nota

Azure CycleCloud usa Chef come strumento di gestione della configurazione per la preparazione e la configurazione di ogni nodo. CycleCloud usa Chef in una modalità autonoma che non si basa su un server Chef centralizzato. Tutti i cookbook destinati ai nodi del cluster gestito vengono invece scaricati dal locker durante la fase di avvio del sistema operativo. A questo punto, Chef elabora l'elenco di ricette definite nelle specifiche di cluster-init del nodo, convertendo in modo efficace la macchina virtuale sottostante in un nodo HPC funzionante.

Per effettuare il provisioning di un cluster basato su un progetto, è necessario caricare il contenuto del progetto in un locker Azure CycleCloud. A ogni avvio del nodo di destinazione vengono quindi scaricati automaticamente i file di progetto necessari dal locker e vengono elaborate le specifiche richieste.

Come si usa cloud-init con Azure CycleCloud?

Azure CycleCloud supporta cloud-init come modo per configurare i nodi del cluster durante la fase di avvio, prima dell'applicazione delle specifiche correlate al progetto. Viene così fornito un metodo pratico per gestire eventuali dipendenze correlate all'infrastruttura o al software, ad esempio la configurazione delle impostazioni di rete o l'applicazione degli aggiornamenti dei pacchetti del sistema operativo.

Sebbene sia possibile definire la configurazione cloud-init usando un modello, è anche possibile eseguire questa operazione direttamente dall'interfaccia grafica di Azure CycleCloud. Quando si crea o si modifica un cluster, le impostazioni pertinenti sono disponibili nella scheda Cloud-Init, dove è possibile immettere gli script per ogni tipo di nodo.

Nota

Poiché l'esecuzione di cloud-init avviene prima dell'applicazione di qualsiasi specifica di progetto di CycleCloud, l'utilità di pianificazione e la configurazione che Azure CycleCloud applica a un nodo possono sovrascrivere le modifiche apportate tramite cloud-init. Se è necessario assicurarsi che i comandi vengano eseguiti dopo l'installazione dell'utilità di pianificazione, usare invece le specifiche di progetto di Azure CycleCloud.