Personalizzare le installazioni software

Completato

I modelli di Azure CycleCloud facilitano la configurazione dei cluster HPC astraendo i dettagli di implementazione dell'infrastruttura sottostante, consentendo di concentrarsi sulla gestione del carico di lavoro. Tuttavia, il carico di lavoro presenta in genere diverse dipendenze correlate al software, che richiedono passaggi di personalizzazione aggiuntivi. Fortunatamente, Azure CycleCloud fornisce anche un framework per implementare questi passaggi tramite il supporto per il provisioning e le attività di 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 usati nell'ambiente HPC locale. Si vuole determinare come usare le funzionalità di Azure CycleCloud per raggiungere questi obiettivi.

Come implementare 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 ai propri requisiti o preferenze:

  • Immagini personalizzate
  • Progetti
  • Cloud-init

Come usare immagini personalizzate con Azure CycleCloud?

Azure CycleCloud supporta i nodi del cluster che eseguono le distribuzioni Linux più comuni e, a seconda del scheduler, anche 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 in base alle immagini personalizzate. Quest'ultima opzione potrebbe essere preferibile se si vuole ridurre al minimo il ritardo associato alla configurazione post-distribuzione del sistema operativo e a eventuali dipendenze aggiuntive dei carichi di lavoro HPC. Potrebbe anche essere necessario 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 loro svantaggio principale è il sovraccarico associato alla gestione di più immagini per supportare diverse combinazioni di applicazioni e versioni, in particolare negli scenari di sviluppo.

Come usare i progetti Azure CycleCloud per l'installazione del software?

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

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

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

La directory BLOB contiene BLOB di progetto, ad esempio file binari per un progetto open source che può essere ridistribuito liberamente e BLOB utente, che devono essere esclusi dalla ridistribuzione del progetto a causa di vincoli di licenza.

La directory templates contiene modelli, mentre le specifiche della directory ospitano specifiche che definiscono le configurazioni da applicare ai nodi del cluster di destinazione.

Annotazioni

Ad esempio, un progetto Slurm contiene almeno due specifiche: una per i nodi principali del sistema di pianificazione e l'altra per i nodi di calcolo.

Nella directory delle specifiche sono presenti due sottodirectory denominate cluster-init e 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.

Annotazioni

Azure CycleCloud usa Chef come strumento di gestione della configurazione per la preparazione e la configurazione di ogni nodo. CycleCloud usa Chef in modalità autonoma che non si basa su un server Chef centralizzato. Invece, tutti i cookbook destinati ai nodi del cluster gestito vengono scaricati dalla locker durante la fase di avvio del sistema operativo. A questo punto Chef elabora l'elenco di ricette definite nelle specifiche 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 di Azure CycleCloud. Quindi, ogni volta che viene avviato il nodo di destinazione, scarica automaticamente i file di progetto necessari dalla locker ed elabora le specifiche necessarie.

Come usare cloud-init con Azure CycleCloud?

Azure CycleCloud supporta cloud-init come modo per configurare i nodi del cluster durante la fase di avvio, prima che vengano applicate specifiche correlate al progetto. Questo offre un metodo pratico per risolvere 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.

Anche se è 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, si trovano le impostazioni pertinenti nella scheda Cloud-Init, in cui è possibile immettere gli script per ogni tipo di nodo.

Annotazioni

Poiché cloud-init viene eseguito prima di qualsiasi specifica di progetto CycleCloud, l'utilità di pianificazione e la configurazione applicata da Azure CycleCloud a un nodo potrebbero sovrascrivere le modifiche apportate tramite cloud-init. Se è necessario assicurarsi che i comandi vengano eseguiti dopo l'installazione dell'utilità di pianificazione, è consigliabile usare invece le specifiche del progetto Azure CycleCloud.