Raccomandazioni per l'abilitazione dell'automazione

Si applica a questa raccomandazione per l'eccellenza dell'operazione di Azure Well-Architected Framework:

OE:10 Progettare e implementare l'automazione in anticipo per operazioni quali problemi relativi al ciclo di vita, bootstrap e applicazione di protezioni di governance e conformità. Non provare ad automatizzare l'automazione in un secondo momento. Scegliere le funzionalità di automazione offerte dalla piattaforma.

Questa guida descrive le raccomandazioni per la progettazione e l'implementazione del carico di lavoro per abilitare l'automazione. Progettare il carico di lavoro tenendo presente l'automazione per garantire che le attività di routine, ad esempio il provisioning di risorse, il ridimensionamento e le distribuzioni vengano eseguite in modo rapido e affidabile. L'automazione semplifica le attività di manutenzione e consente di aggiornare, applicare patch e aggiornare i sistemi in modo più efficiente.

Strategie di progettazione chiave

Progettare componenti del carico di lavoro per supportare l'automazione

È possibile progettare il carico di lavoro per supportare l'automazione dalla fase di ideazione alla fase di miglioramento in corso. Prima di tutto, considerare come si vuole applicare l'automazione nel carico di lavoro per assicurarsi di inserire i componenti necessari. Considerare il carico di lavoro in termini di pilastri di Well-Architected Framework per pianificare i tipi di automazione che verranno usati. È possibile automatizzare molte funzioni di sicurezza, affidabilità, prestazioni, operazioni e controllo dei costi.

Progettare con l'automazione per ridurre al minimo il refactoring dopo l'esecuzione del carico di lavoro. Prendere in considerazione i requisiti del carico di lavoro per decidere quali strumenti di automazione usare. Potrebbero essere disponibili strumenti di automazione predefiniti con cui il team ha già familiarità. L'adozione di questi strumenti può rendere il percorso verso l'automazione del carico di lavoro più semplice, tenendo conto delle limitazioni e della compatibilità con la piattaforma cloud. Ad esempio, alcuni strumenti di automazione potrebbero integrarsi bene con gli strumenti dell'interfaccia della riga di comando di Azure, mentre altri potrebbero richiedere interfacce REST. Esaminare sempre gli strumenti forniti dalla piattaforma cloud per assicurarsi che siano compatibili e fornire le funzionalità necessarie. Esempi di modi in cui è possibile pianificare in modo proattivo l'automazione includono:

  • Distribuzione: automatizzare le distribuzioni dell'applicazione e dell'infrastruttura per garantire uno standard prevedibile. Pianificare la distribuzione automatizzata sviluppando standard di distribuzione, addestrando il team sugli strumenti che verranno usati e implementando l'infrastruttura necessaria.

  • Convalida: convalidare automaticamente i requisiti di conformità rispetto al carico di lavoro usando strumenti di orchestrazione o criteri. Identificare lo strumento di convalida appropriato per il carico di lavoro e pianificare l'implementazione dei sistemi necessari, ad esempio i server di orchestrazione.

  • Scalabilità automatica: usare il ridimensionamento automatico in tutta l'infrastruttura per ottenere i requisiti di affidabilità e prestazioni. È consigliabile allocare in anticipo spazio indirizzi IP e subnet nel carico di lavoro per tenere conto delle operazioni di ridimensionamento, oltre alla pianificazione della ridondanza e della crescita naturale.

Compromesso: quando si progetta il carico di lavoro per abilitare l'automazione, considerare il grado di controllo che si vuole mantenere rispetto all'efficienza che è possibile ottenere tramite l'automazione. In alcuni casi, il carico di lavoro potrebbe non essere abbastanza maturo per automatizzare alcune funzioni o potrebbe essere necessario un livello di flessibilità che l'automazione non offre.

Prendere in considerazione anche il set di competenze del team durante la progettazione del carico di lavoro. Se un livello elevato di automazione richiede strumenti che il team non è dotato di supporto, potrebbe essere necessario usare una progettazione meno completa come passaggio intermedio.

Rivedere la progettazione dell'automazione durante il ciclo di vita

Dopo l'esecuzione del carico di lavoro nel cloud, è importante classificare in ordine di priorità il miglioramento continuo. Osservare il carico di lavoro in azione, analizzare i modelli di utilizzo ed esaminare il comportamento dei clienti correlato al carico di lavoro per identificare le aree in cui è possibile migliorare l'automazione. Cercare modi per migliorare l'automazione esistente o introdurre una nuova automazione per migliorare l'esperienza dei clienti. Ad esempio, è possibile che il ridimensionamento automatizzato sia abilitato, ma l'aumento del carico di lavoro è di breve durata. È possibile integrare l'automazione con scalabilità orizzontale per ridurre l'utilizzo della CPU quando il carico scende al di sotto della soglia.

Le sezioni seguenti di questa guida offrono raccomandazioni su aree specifiche di automazione che possono essere utili per la progettazione e l'implementazione del carico di lavoro.

Automatizzare il bootstrap

Il bootstrap fa riferimento agli aggiornamenti della configurazione a una risorsa che devono essere eseguiti dopo il provisioning, ma prima che sia disponibile come parte del pool di carico di lavoro. Il bootstrap è spesso associato a macchine virtuali (VM), ma molte altre risorse devono essere configurate come parte del processo di distribuzione, tra cui tecnologie PaaS (Platform as a Service) e tecnologie di hosting di contenitori come servizio Azure Kubernetes (servizio Azure Kubernetes).

La piattaforma cloud potrebbe offrire soluzioni di bootstrap, che è consigliabile usare laddove possibile. Ad esempio, è possibile usare le estensioni vm in Azure per apportare modifiche di configurazione predefinite durante il processo di distribuzione e personalizzare le modifiche di configurazione inserendo script di PowerShell.

Incorporare l'automazione nella gestione degli accessi

Prendere in considerazione l'automazione quando si progetta la strategia di autenticazione e autorizzazione. È importante mantenere il massimo livello di sicurezza nei carichi di lavoro di produzione, ma ciò può influire sull'automazione. Ad esempio, l'uso dell'autenticazione biometrica o a più fattori aggiunge complessità che deve essere considerata nella progettazione di automazione. Usare account non umani e sicuri per l'autenticazione automatizzata, ad esempio identità gestite, identità del carico di lavoro o certificati. Assicurarsi di aver incluso la gestione dei segreti e delle chiavi nell'automazione per una maggiore sicurezza di autenticazione.

Variabilità della progettazione nel carico di lavoro

Evitare inutilmente di distribuire una nuova infrastruttura quando vengono apportate piccole modifiche creando flessibilità agli artefatti. Ad esempio, anziché ridistribuire l'infrastruttura quando viene modificato un flag di funzionalità, è possibile usare i parametri impostati per aggiornare componenti come le configurazioni dell'app. Assicurarsi di definire e documentare chiaramente il modo in cui viene usata la variabilità per evitare l'uso eccessivo e la deriva della configurazione.

Creare un piano di controllo

Un piano di controllo è il sistema back-end o la suite di strumenti usati per gestire l'applicazione e le relative dipendenze tramite un'interfaccia unificata. Creare il piano di controllo come un'interfaccia REST, un'interfaccia della riga di comando o un webhook per supportare l'automazione tramite strumenti esterni.

Esporre le operazioni di manutenzione tramite il piano di controllo che consentono di coordinare i componenti del carico di lavoro, ad esempio backup e ripristino ordinati, bootstrap, configurazione, importazione/esportazione e operazioni di invio in batch. Prestare attenzione a scegliere il livello di granularità corretto quando si decide di esporre le operazioni tramite il piano di controllo.

Adottare un approccio basato sui dati per sviluppare l'automazione

Sviluppare una strategia di monitoraggio per acquisire le metriche che determinano il tipo di automazione necessaria. Usare la registrazione strutturata e le metriche personalizzate per fornire le informazioni richieste dall'automazione in un formato facile da riconoscere con gli strumenti di automazione. Le metriche acquisite devono essere associate a soglie definite nel sistema di monitoraggio che attivano avvisi e azioni automatizzate, ad esempio notifiche o meccanismi di riparazione automatica, quando appropriato. Per altre informazioni, vedere Raccomandazioni per la riparazione automatica e la conservazione automatica.

Automatizzare gli eventi del ciclo di vita degli utenti

Progettare l'applicazione e l'infrastruttura per consentire l'onboarding e l'offboarding automatizzati degli utenti, per utenti singoli o clienti multi-tenant. Pianificare gli aggiornamenti automatici del database tramite script, provisioning e deprovisioning dell'infrastruttura e gestione delle credenziali e dei segreti.

Automatizzare la configurazione dello stato desiderato

Nell'ambito della gestione continua del carico di lavoro, è possibile automatizzare Dsc (Desired State Configuration) nelle risorse per assicurarsi che soddisfino i requisiti aziendali e di conformità. L'automazione DSC garantisce che la deviazione della configurazione venga intercettata e risolta rapidamente. È possibile automatizzare DSC usando strumenti di orchestrazione o strumenti di gestione dei criteri. Si pensi a strumenti di orchestrazione, come i servizi Azure DevOps o Jenkins, come meccanismi basati su push. Gli strumenti di orchestrazione consentono il push degli aggiornamenti della configurazione tramite un evento del flusso di lavoro, ad esempio una distribuzione manuale o automatica. Questi aggiornamenti vengono eseguiti come parte di una sequenza di attività definita nello script di distribuzione. Gli strumenti di gestione dei criteri usano meccanismi basati sul pull, ovvero un sistema viene eseguito a livello di base del carico di lavoro che esegue periodicamente il polling del carico di lavoro per controllarne lo stato rispetto a DSC definito. Se il polling identifica un errore di allineamento o deviazione della configurazione, lo strumento esegue un'azione correttiva. Quando si decide tra l'orchestrazione e gli strumenti di gestione dei criteri, tenere presenti i fattori seguenti:

  • Gli strumenti di orchestrazione non dispongono di funzionalità predefinite per eseguire in modo proattivo il polling del carico di lavoro per la deviazione della configurazione. Gli strumenti di orchestrazione devono essere integrati nella pipeline di integrazione continua e recapito continuo (CI/CD) per mantenere uno standard per la distribuzione e la gestione dell'infrastruttura come codice (IaC). Un vantaggio dell'uso degli strumenti di orchestrazione è che le risorse sono sempre completamente configurate durante la distribuzione.

  • Gli strumenti di gestione dei criteri consentono di definire criteri che influiscono su uno o più gruppi di risorse. Questi criteri vengono applicati quando la risorsa esegue il controllo con il sistema di gestione dei criteri. Un vantaggio dell'uso della gestione dei criteri è che questi sistemi non sono basati sul codice, quindi potrebbero essere più facili da adottare per gli operatori del team.

Quando si decide tra strumenti di orchestrazione o criteri, valutare se gli aggiornamenti di configurazione che si prevede di apportare sulle nuove risorse devono essere eseguiti al momento della distribuzione. Valutare anche se la definizione degli aggiornamenti nel codice soddisfa le procedure operative e il numero di tipi di risorse che si prevede di distribuire. Se esistono molte configurazioni diverse tra i tipi di risorse, gli strumenti dei criteri potrebbero essere un modo più semplice per gestire gli aggiornamenti.

Facilitazione di Azure

Gestione dei criteri

Criteri di Azure: usando Criteri di Azure, è possibile applicare gli standard e valutare la conformità su larga scala. Criteri di Azure offre una visualizzazione aggregata per valutare lo stato complessivo dell'ambiente del carico di lavoro nel dashboard di conformità. In alternativa, è possibile usare Criteri di Azure per valutare ogni risorsa e criterio a livello granulare. È anche possibile usare Criteri di Azure per correggere automaticamente le nuove risorse o correggere le risorse esistenti in blocco.

Compromesso: l'offload dell'automazione dalla pipeline CI/CD agli strumenti o ai servizi della piattaforma, come Criteri di Azure, può semplificare la pipeline, ma presenta svantaggi come il carico di gestione aggiuntivo dell'uso di più sistemi. Ad esempio, gli errori di esecuzione in un servizio della piattaforma non verranno rilevati nei log della pipeline e dovranno essere inseriti nella piattaforma di osservabilità in modo intelligente, in modo che le parti appropriate vengano notificate.

Automazione bootstrap

Estensioni di Azure Macchine virtuali: le estensioni Macchine virtuali sono pacchetti di piccole dimensioni che eseguono la configurazione post-distribuzione e l'automazione nelle macchine virtuali. Sono disponibili diverse estensioni per diverse attività di configurazione, ad esempio l'esecuzione di script, la configurazione di soluzioni antimalware e la configurazione di soluzioni di registrazione. Installare ed eseguire queste estensioni nelle macchine virtuali usando un modello di Azure Resource Manager, l'interfaccia della riga di comando di Azure, il modulo Azure PowerShell o il portale di Azure. Ogni macchina virtuale ha un agente di macchine virtuali installato che gestisce il ciclo di vita dell'estensione.

In genere, le estensioni vm usano un'estensione di script personalizzata per installare software, eseguire comandi ed eseguire configurazioni in una macchina virtuale o in un'set di scalabilità di macchine virtuali di Azure. È possibile impostare queste estensioni per l'esecuzione come parte delle distribuzioni IaC in modo che vengano eseguite in nuove macchine virtuali usando l'agente di macchine virtuali di Azure. Le estensioni possono essere eseguite anche all'esterno di una distribuzione di Azure usando l'interfaccia della riga di comando di Azure, il modulo PowerShell o il portale di Azure.

Cloud-init: Cloud-init è uno strumento di settore per la configurazione di macchine virtuali Linux al primo avvio. Analogamente alle estensioni di script personalizzate di Azure, cloud-init consente di installare pacchetti ed eseguire comandi in macchine virtuali Linux. È possibile usare cloud-init per l'installazione software, la configurazione di sistema e la gestione temporanea del contenuto. Azure include molte immagini di macchine virtuali abilitate per cloud-init tra distribuzioni Linux note. Per un elenco completo, vedere cloud-init support for VMs in Azure (Supporto cloud-init per le macchine virtuali in Azure).

Risorsa script di distribuzione di Azure: quando si esegue la distribuzione con Azure, potrebbe essere necessario eseguire codice arbitrario per il bootstrap della gestione degli account utente, dei pod Kubernetes o dell'esecuzione di query sui dati da un sistema non Azure. Poiché nessuna di queste operazioni è accessibile tramite il piano di controllo di Azure, è necessario un meccanismo separato. Per altre informazioni, vedere DeploymentScripts di Microsoft.Resources. Come qualsiasi altra risorsa di Azure, la risorsa script di distribuzione:

  • Può essere usato in un modello di Azure Resource Manager.

  • Contiene le dipendenze del modello di Azure Resource Manager in altre risorse.

  • Utilizza l'input e produce l'output.

  • Usa un'identità gestita assegnata dall'utente per l'autenticazione.

Quando viene distribuito, lo script di distribuzione esegue comandi e script dell'interfaccia della riga di comando di Azure o PowerShell. Le esecuzioni e la registrazione degli script possono essere osservate nella portale di Azure o con l'interfaccia della riga di comando di Azure e il modulo PowerShell. È possibile personalizzare le variabili per l'ambiente di esecuzione, le opzioni di timeout e la gestione delle risorse dopo un errore di script.

Cluster del servizio Azure Kubernetes bootstrap con GitOps: è possibile eseguire il bootstrap di un cluster del servizio Azure Kubernetes appena sottoposto a provisioning usando GitOps e l'estensione del cluster Flux v2 dichiarando le impostazioni di configurazione nei repository GitHub. Poiché i file del cluster del servizio Azure Kubernetes vengono archiviati in un repository GitHub, vengono modificati e le modifiche tra le versioni vengono facilmente rilevate. I controller Kubernetes vengono eseguiti nei cluster e riconciliano continuamente lo stato del cluster con lo stato desiderato dichiarato nel repository Git eseguendo il pull dei file dal repository. Per altre informazioni, vedere Architettura di riferimento della baseline del servizio Azure Kubernetes.

Gestione della configurazione

Automazione di Azure State Configuration è uno strumento di gestione DSC gestito dalla funzionalità di configurazione guest Criteri di Azure che è possibile usare per scrivere, gestire e compilare configurazioni DSC di PowerShell per i nodi in qualsiasi data center cloud o locale. È anche possibile usare questo strumento per importare risorse DSC e assegnare configurazioni ai nodi di destinazione.

app Azure Configurazione è un servizio che è possibile usare per gestire centralmente le impostazioni dell'applicazione e i flag di funzionalità. Funziona con Azure Key Vault per poter gestire in modo sicuro un'ampia gamma di configurazioni dell'applicazione nell'ambiente in uso.

Rilevamento modifiche e inventario

Rilevamento modifiche e inventario con l'agente di monitoraggio di Azure tiene traccia della deviazione della configurazione del sistema operativo nelle macchine virtuali di Azure e nelle macchine virtuali abilitate per Arc. Questo consente di automatizzare il rilevamento delle deviazioni, dei servizi in esecuzione dell'inventario e dei pacchetti installati nelle macchine virtuali nel carico di lavoro. Gli elementi rilevati dal rilevamento delle modifiche e dall'inventario includono:

  • Software Windows e Linux installato
  • File chiave di Windows e Linux
  • Chiavi del Registro di sistema di Windows
  • Servizi Windows e daemon Linux

Elenco di controllo per l'eccellenza operativa

Fare riferimento al set completo di raccomandazioni.