Raccomandazioni per l'abilitazione dell'automazione

Si applica a questo elenco di controllo di Azure Well-Architected Framework Operation Excellence:

OE:10 Progettare e implementare l'automazione in anticipo per le operazioni quali problemi relativi al ciclo di vita, bootstrapping e applicazione di governance e guardrail di conformità. Non provare a aggiornare l'automazione in un secondo momento. Scegliere le funzionalità di automazione fornite dalla piattaforma.

Questa guida descrive i consigli per la progettazione e l'implementazione del carico di lavoro per abilitare l'automazione. Progettare il carico di lavoro con automazione per garantire che le attività di routine, ad esempio il provisioning di risorse, scalabilità e distribuzioni vengano eseguite rapidamente e in modo 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

Progettazione del carico di lavoro

È possibile progettare il carico di lavoro per supportare l'automazione dalla fase di ideazione alla fase di miglioramento in corso. Prima di tutto, prendere in considerazione come applicare l'automazione nel carico di lavoro per garantire che vengano inseriti i pezzi necessari. Si consideri il carico di lavoro in termini di pilastri di Well-Architected Framework per pianificare i tipi di automazione usati. È possibile automatizzare molte funzioni di sicurezza, affidabilità, prestazioni, operazioni e controllo dei costi.

Progettare con automazione in modo da ridurre al minimo il refactoring dopo l'esecuzione del carico di lavoro. Prendere in considerazione i requisiti del carico di lavoro quando si decide quali strumenti di automazione usare. Potrebbero essere disponibili strumenti di automazione non aggiornati con cui il team ha già familiarità. L'adozione di questi strumenti può rendere il percorso verso l'automazione del carico di lavoro, ma tenere presente le limitazioni e la compatibilità con la piattaforma cloud. Ad esempio, alcuni strumenti di automazione potrebbero integrarsi 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, formazione del 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 server di orchestrazione.

  • Scalabilità automatica: usare il ridimensionamento automatico in tutta l'infrastruttura per ottenere i requisiti di affidabilità e prestazioni. È necessario allocare spazio indirizzi IP e subnet nel carico di lavoro in anticipo 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 fornisce.

Considerare 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.

Miglioramenti continui del carico di lavoro

Dopo l'esecuzione del carico di lavoro nel cloud, è importante assegnare priorità al miglioramento continuo. Osservare il carico di lavoro in azione, analizzare i modelli di utilizzo e esaminare il comportamento del cliente correlato al carico di lavoro per identificare le aree in cui è possibile migliorare l'automazione. Cercare modi per migliorare l'automazione esistente o introdurre nuove automazione per migliorare l'esperienza del cliente. 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 consentono di progettare e implementare il carico di lavoro.

Bootstrap

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

La piattaforma cloud può fornire soluzioni di avvio automatico per l'utente, che è consigliabile usare se possibile. Ad esempio, è possibile usare le estensioni della macchina virtuale in Azure per apportare modifiche di configurazione predefinite durante il processo di distribuzione e personalizzare le modifiche di configurazione inserendo script di PowerShell.

Autenticazione e autorizzazione

Prendere in considerazione l'automazione durante la progettazione della strategia di autenticazione e autorizzazione. È importante mantenere il livello più elevato di sicurezza nei carichi di lavoro di produzione, ma ciò può influire sull'automazione. Ad esempio, l'uso dell'autenticazione biometrica o multifactoring 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 aumentare la sicurezza di autenticazione.

Progettazione della variabilità nel carico di lavoro

Evitare di distribuire inutilmente una nuova infrastruttura quando vengono apportate piccole modifiche creando flessibilità nell'artefatto. Ad esempio, anziché ridistribuire l'infrastruttura quando cambia un flag di funzionalità, è possibile usare i parametri impostati per aggiornare i componenti come le configurazioni dell'app. Assicurarsi di definire chiaramente e documentare 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 un 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 consente di coordinare i componenti del carico di lavoro, ad esempio backup e ripristino ordinato, avviostrapping, configurazione, importazione/esportazione e operazioni di batch. Prestare attenzione a scegliere il livello di granularità corretto quando si decide di esporre le operazioni tramite il piano di controllo.

Monitoraggio e log

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

Ciclo di vita dell'utente

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

Uso di orchestrazione e criteri

Come parte della gestione continua del carico di lavoro, è possibile automatizzare Desired State Configuration (DSC) nelle risorse per garantire che soddisfino i requisiti di conformità e business. L'automazione DSC consente di garantire che la deriva della configurazione venga rilevata e risolta rapidamente. È possibile automatizzare DSC usando strumenti di orchestrazione o strumenti di gestione dei criteri. Si considerino strumenti di orchestrazione, ad esempio i servizi DevOps di Azure 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 automatizzata. 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 che un sistema viene eseguito a livello di base del carico di lavoro che esegue periodicamente il polling del carico di lavoro per controllare lo stato rispetto a DSC definito. Se il poll identifica un errore di allineamento o deviazione della configurazione, lo strumento esegue un'azione correttiva. Considerare i fattori seguenti quando si decide tra orchestrazione e strumenti di gestione dei criteri:

  • Gli strumenti di orchestrazione non dispongono di funzionalità predefinite per eseguire il polling proattivo del carico di lavoro per la deriva della configurazione. Gli strumenti di orchestrazione devono essere integrati nella pipeline di integrazione continua e distribuzione continua (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 quando vengono distribuite.

  • 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 viene eseguita 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 per gli operatori del team di adottare.

Quando si decide tra gli strumenti di orchestrazione o criteri, valutare se gli aggiornamenti di configurazione che si prevede di effettuare sulle nuove risorse devono essere apportati al momento della distribuzione. Si consideri anche se la definizione degli aggiornamenti nel codice si adatta alle procedure operative e al numero di tipi di risorse che si prevede di distribuire. Se esistono molte configurazioni diverse tra 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: l'uso di Criteri di Azure consente di applicare standard e valutare la conformità su larga scala. Criteri di Azure fornisce 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 criteri 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, ad esempio 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 di 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. Per diverse attività di configurazione sono disponibili diverse estensioni, ad esempio l'esecuzione di script, la configurazione di soluzioni antimalware e la configurazione delle 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, Azure PowerShell modulo o la 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 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 del sistema e la gestione temporanea del contenuto. Azure include molte immagini vm abilitate per cloud-init in 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 Resource Manager di Azure.

  • 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. È possibile osservare le esecuzioni e la registrazione di script nel 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 avviare 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, le versioni vengono modificate 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 di base 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.

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

Rilevamento modifiche e inventario

Rilevamento delle modifiche e inventario con l'agente di monitoraggio di Azure tiene traccia della deriva della configurazione del sistema operativo nelle macchine virtuali. Ciò 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 articoli 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.