Recommandations pour l’activation de l’automatisation
S’applique à cette recommandation de liste de contrôle Azure Well-Architected Framework Operation Excellence :
OE :10 | Concevez et implémentez l’automatisation pour les opérations telles que les problèmes de cycle de vie, le démarrage et l’application de garde-fous en matière de gouvernance et de conformité. N’essayez pas de moderniser l’automatisation ultérieurement. Choisissez les fonctionnalités d’automatisation fournies par votre plateforme. |
---|
Ce guide décrit les recommandations relatives à la conception et à l’implémentation de votre charge de travail pour activer l’automatisation. Concevez votre charge de travail avec automatisation à l’esprit pour vous assurer que les tâches de routine telles que l’approvisionnement des ressources, la mise à l’échelle et les déploiements sont effectuées rapidement et de manière fiable. L’automatisation simplifie les tâches de maintenance et vous permet de mettre à jour, de corriger et de mettre à niveau vos systèmes plus efficacement.
Stratégies de conception
Concevoir des composants de charge de travail pour prendre en charge l’automatisation
Vous pouvez concevoir votre charge de travail pour prendre en charge l’automatisation de la phase d’idées jusqu’à la phase d’amélioration en cours. Tout d’abord, tenez compte de la façon dont vous souhaitez appliquer l’automatisation dans votre charge de travail pour vous assurer que vous placez les éléments nécessaires. Réfléchissez à votre charge de travail en termes de piliers well-architected Framework pour vous aider à planifier les types d’automatisation que vous utiliserez. Vous pouvez automatiser de nombreuses fonctions de sécurité, de fiabilité, de performances, d’opérations et de contrôle des coûts.
Conception avec automatisation à l’esprit pour réduire la refactorisation après l’exécution de votre charge de travail. Tenez compte des besoins de votre charge de travail lors de la décision des outils d’automatisation à utiliser. Il peut y avoir des outils d’automatisation prêts à l’emploi que votre équipe connaît déjà. L’adoption de ces outils peut faciliter l’automatisation de votre charge de travail, mais gardez à l’esprit leurs limitations et leur compatibilité avec votre plateforme cloud. Par exemple, certains outils d’automatisation peuvent s’intégrer correctement aux outils Azure CLI, tandis que d’autres peuvent nécessiter des interfaces REST. Examinez toujours les outils fournis par votre plateforme cloud pour vous assurer qu’ils sont compatibles et fournissent les fonctionnalités dont vous avez besoin. Voici quelques exemples de méthodes que vous pouvez planifier de manière proactive pour l’automatisation :
Déploiement : Automatisez vos déploiements d’application et d’infrastructure pour garantir une norme prévisible. Planifiez le déploiement automatisé en développant des normes de déploiement, en formant votre équipe sur les outils que vous utiliserez et en implémentant l’infrastructure nécessaire.
Validation : validez automatiquement les exigences de conformité par rapport à votre charge de travail à l’aide d’outils d’orchestration ou de stratégie. Identifiez l’outil de validation approprié pour votre charge de travail et prévoyez d’implémenter les systèmes requis, par exemple les serveurs d’orchestration.
Mise à l’échelle automatique : utilisez la mise à l’échelle automatique dans votre infrastructure pour vous aider à atteindre vos besoins en matière de fiabilité et de performances. Vous devez allouer de l’espace d’adressage IP et des sous-réseaux dans votre charge de travail à l’avance pour prendre en compte les opérations de mise à l’échelle, en plus de planifier la redondance et la croissance naturelle.
Compromis : lors de la conception de votre charge de travail pour activer l’automatisation, tenez compte du degré de contrôle que vous souhaitez conserver par rapport à l’efficacité que vous pouvez gagner grâce à l’automatisation. Dans certains cas, votre charge de travail peut ne pas être suffisamment mature pour automatiser certaines fonctions ou vous avez peut-être besoin d’un niveau de flexibilité que l’automatisation ne fournit pas.
Prenez également en compte l’ensemble de compétences de votre équipe lors de la conception de votre charge de travail. Si un degré élevé d’automatisation nécessite des outils que votre équipe n’est pas équipé pour prendre en charge, vous devrez peut-être utiliser une conception moins complète en tant qu’étape intermédiaire.
Revisiter la conception d’automatisation pendant le cycle de vie
Une fois votre charge de travail exécutée dans le cloud, il est important de hiérarchiser l’amélioration continue. Observez votre charge de travail en action, analysez les modèles d’utilisation et passez en revue le comportement du client lié à votre charge de travail pour identifier les zones où vous pouvez améliorer l’automatisation. Recherchez des façons d’améliorer l’automatisation existante ou d’introduire une nouvelle automatisation pour améliorer votre expérience client. Par exemple, vous pouvez avoir activé la mise à l’échelle automatisée, mais l’augmentation de la charge de travail est de courte durée. Vous pouvez intégrer l’automatisation de mise à l’échelle pour réduire l’utilisation du processeur lorsque la charge tombe en dessous du seuil.
Les sections suivantes de ce guide proposent des recommandations sur des domaines spécifiques d’automatisation qui peuvent vous aider dans la conception et l’implémentation de votre charge de travail.
Automatiser l’amorçage
Le démarrage fait référence aux mises à jour de la configuration d'une ressource qui doivent être effectuées après son approvisionnement, mais avant qu'elle ne soit disponible en tant que partie du pool de charge de travail. Le démarrage est souvent associé à des machines virtuelles, mais de nombreuses autres ressources doivent être configurées dans le cadre du processus de déploiement, notamment les technologies PaaS (platform as a service) et les technologies d’hébergement de conteneurs comme Azure Kubernetes Service (AKS).
Votre plateforme cloud peut fournir des solutions de démarrage pour vous, que vous devez utiliser le cas échéant. Par exemple, vous pouvez utiliser des extensions de machine virtuelle dans Azure pour apporter des modifications de configuration prédéfinies pendant le processus de déploiement et personnaliser vos modifications de configuration en injectant des scripts PowerShell.
Incorporer l’automatisation dans la gestion des accès
Prenez en compte l’automatisation lors de la conception de votre stratégie d’authentification et d’autorisation. Il est important de maintenir le niveau de sécurité le plus élevé dans les charges de travail de production, mais cela peut affecter l’automatisation. Par exemple, l’utilisation de l’authentification biométrique ou multifacteur ajoute une complexité qui doit être prise en compte dans votre conception d’automatisation. Utilisez des comptes non humains et sécurisés pour l’authentification automatisée, comme les identités managées, les identités de charge de travail ou les certificats. Vérifiez que vous avez inclus la gestion des clés et des secrets dans votre automatisation pour renforcer la sécurité de l’authentification.
Variabilité de la conception dans votre charge de travail
Évitez de déployer inutilement de nouvelles infrastructures lorsque de petites modifications sont apportées en créant une flexibilité dans vos artefacts. Par exemple, au lieu de redéployer votre infrastructure lorsqu’un indicateur de fonctionnalité change, vous pouvez utiliser des paramètres définis pour mettre à jour des composants tels que des configurations d’application. Veillez à définir et documenter clairement la façon dont la variabilité est utilisée pour éviter la surutilisation et la dérive de configuration.
Créer un plan de contrôle
Un plan de contrôle est le système back-end ou la suite d’outils que vous utilisez pour gérer l’application et ses dépendances via une interface unifiée. Construisez votre plan de contrôle comme une interface REST, une CLI ou un webhook pour prendre en charge l'automatisation par des outils externes.
Exposez les opérations de maintenance par le biais du plan de contrôle qui vous permettent de coordonner les composants de charge de travail, par exemple les opérations de sauvegarde et de restauration ordonnées, de démarrage, de configuration, d’importation/exportation et de traitement par lots. Veillez à choisir le niveau de granularité approprié lors de la décision des opérations à exposer via le plan de contrôle.
Adopter une approche pilotée par les données pour développer l’automatisation
Développez une stratégie de supervision pour capturer les métriques qui pilotent le type d’automatisation dont vous avez besoin. Utilisez la journalisation structurée et les métriques personnalisées pour fournir les informations requises par l’automatisation dans un format facile à reconnaître avec les outils d’automatisation. Les métriques que vous capturez doivent être associées à des seuils définis dans le système de surveillance qui déclenchent des alertes et des actions automatisées, telles que les notifications ou les mécanismes de réparation automatique, le cas échéant. Pour plus d’informations, consultez Recommandations pour l’auto-guérison et la préservation de soi.
Automatiser les événements de cycle de vie des utilisateurs
Concevez votre application et votre infrastructure pour permettre l’intégration et l’annulation automatisées des utilisateurs, pour les particuliers ou les clients multilocataire. Planifiez les mises à jour de base de données automatisées via des scripts, l’approvisionnement d’infrastructure et la déprovisionnement, ainsi que la gestion des informations d’identification et des secrets.
Automatiser la configuration de l’état souhaité
Dans le cadre de votre gestion continue des charges de travail, vous pouvez automatiser la configuration d’état souhaité (DSC) dans vos ressources pour vous assurer qu’elles répondent aux exigences de conformité et d’entreprise. L’automatisation DSC permet de s’assurer que la dérive de configuration est interceptée et corrigée rapidement. Vous pouvez automatiser DSC à l’aide d’outils d’orchestration ou d’outils de gestion des stratégies. Considérez les outils d’orchestration, tels que les services Azure DevOps ou Jenkins, comme des mécanismes basés sur push. Les outils d’orchestration permettent aux mises à jour de configuration d’être envoyées via un événement de flux de travail, comme un déploiement manuel ou automatisé. Ces mises à jour sont exécutées dans le cadre d’une séquence de tâches définie dans votre script de déploiement. Les outils de gestion des stratégies utilisent des mécanismes basés sur l’extraction, ce qui signifie qu’un système s’exécute au niveau fondamental de votre charge de travail qui interroge régulièrement la charge de travail pour vérifier son état par rapport à votre DSC défini. Si le sondage identifie une dérive de configuration ou de non-alignement, l’outil prend des mesures correctives. Tenez compte des facteurs suivants lors de la décision entre l’orchestration et les outils de gestion des stratégies :
Les outils d’orchestration n’ont pas de fonctionnalités intégrées pour interroger de manière proactive votre charge de travail pour détecter la dérive de configuration. Les outils d’orchestration doivent être intégrés à votre pipeline d’intégration continue et de livraison continue (CI/CD) pour maintenir une norme pour le déploiement et la gestion de l’infrastructure en tant que code (IaC). L’utilisation d’outils d’orchestration présente un avantage : les ressources sont toujours entièrement configurées lors du déploiement.
Les outils de gestion des stratégies vous permettent de définir des stratégies qui affectent un ou plusieurs groupes de ressources. Ces stratégies sont appliquées lorsque la ressource vérifie avec le système de gestion des stratégies. L’un des avantages de l’utilisation de la gestion des stratégies est que ces systèmes ne sont pas pilotés par le code. Ils peuvent donc être plus faciles à adopter pour les opérateurs de votre équipe.
Lorsque vous décidez entre les outils d’orchestration ou de stratégie, déterminez si les mises à jour de configuration que vous envisagez d’effectuer sur de nouvelles ressources doivent être effectuées au moment du déploiement. Pensez également à définir des mises à jour dans le code en fonction de vos pratiques opérationnelles et du nombre de types de ressources que vous envisagez de déployer. S’il existe de nombreuses configurations différentes entre les types de ressources, les outils de stratégie peuvent être un moyen plus simple de gérer les mises à jour.
Facilitation via Azure
Gestion des stratégies
Azure Policy : À l’aide d’Azure Policy, vous pouvez appliquer des normes et évaluer la conformité à grande échelle. Azure Policy fournit une vue agrégée pour évaluer l’état global de l’environnement de charge de travail dans le tableau de bord de conformité. Vous pouvez également utiliser Azure Policy pour évaluer chaque ressource et chaque stratégie à un niveau granulaire. Vous pouvez également utiliser Azure Policy pour corriger automatiquement les nouvelles ressources ou corriger les ressources existantes en bloc.
Compromis : décharger l’automatisation de votre pipeline CI/CD vers des outils ou services de plateforme, comme Azure Policy, peut simplifier votre pipeline, mais présente des inconvénients tels que la charge de gestion supplémentaire de l’utilisation de plusieurs systèmes. Par exemple, les échecs d’exécution dans un service de plateforme ne seront pas interceptés dans vos journaux de pipeline et devront être alimentés intelligemment dans votre plateforme d’observabilité afin que les parties appropriées soient averties.
automation du démarrage
Extensions Azure Machines Virtuelles : les extensions Machines Virtuelles sont des petits packages qui exécutent la configuration et l’automatisation post-déploiement sur des machines virtuelles. Plusieurs extensions sont disponibles pour différentes tâches de configuration, telles que l’exécution de scripts, la configuration de solutions anti-programmes malveillants et la configuration de solutions de journalisation. Installez et exécutez ces extensions sur des machines virtuelles à l’aide d’un modèle Azure Resource Manager, d’Azure CLI, d’un module Azure PowerShell ou du Portail Azure. Chaque machine virtuelle dispose d’un agent de machine virtuelle installé qui gère le cycle de vie de l’extension.
En règle générale, les extensions de machine virtuelle utilisent une extension de script personnalisée pour installer des logiciels, exécuter des commandes et effectuer des configurations sur une machine virtuelle ou des groupes de machines virtuelles identiques Azure. Vous pouvez configurer ces extensions pour qu’elles s’exécutent dans le cadre des déploiements IaC afin qu’elles s’exécutent sur de nouvelles machines virtuelles à l’aide de l’agent de machine virtuelle Azure. Les extensions peuvent également être exécutées en dehors d’un déploiement Azure à l’aide de l’interface de ligne de commande Azure, du module PowerShell ou du Portail Azure.
Cloud-init : Cloud-init est un outil industriel pour configurer des machines virtuelles Linux lors du premier démarrage. Tout comme les extensions de script personnalisé Azure, cloud-init vous permet d’installer des packages et d’exécuter des commandes sur des machines virtuelles Linux. Vous pouvez utiliser cloud-init pour l’installation logicielle, la configuration système et la préproduction de contenu. Azure inclut de nombreuses images de machine virtuelle compatibles avec le cloud dans les distributions Linux connues. Pour obtenir une liste complète, consultez la prise en charge cloud-init des machines virtuelles dans Azure.
Ressource de script de déploiement Azure : lorsque vous déployez à l’aide d’Azure, vous devrez peut-être exécuter du code arbitraire pour démarrer la gestion des comptes d’utilisateur, des pods Kubernetes ou interroger des données à partir d’un système non-Azure. Étant donné qu’aucune de ces opérations n’est accessible via le plan de contrôle Azure, un mécanisme distinct est nécessaire. Pour plus d’informations, consultez DeploymentScripts microsoft.Resources. Comme n’importe quelle autre ressource Azure, la ressource de script de déploiement :
Peut être utilisé dans un modèle Azure Resource Manager.
Contient des dépendances de modèle Azure Resource Manager dans d’autres ressources.
Consomme l’entrée et produit la sortie.
Utilise une identité managée affectée par l’utilisateur pour l’authentification.
Une fois déployé, le script de déploiement exécute les commandes et scripts PowerShell ou Azure CLI. Les exécutions de script et la journalisation peuvent être observées dans le Portail Azure ou avec le module Azure CLI et PowerShell. Vous pouvez personnaliser les variables pour l’environnement d’exécution, les options de délai d’expiration et la gestion des ressources après un échec de script.
Clusters AKS bootstrap avec GitOps : vous pouvez démarrer un cluster AKS nouvellement approvisionné à l’aide de GitOps et de l’extension de cluster Flux v2 en déclarant vos paramètres de configuration dans les référentiels GitHub. Étant donné que les fichiers de cluster AKS sont stockés dans un dépôt GitHub, ils sont versionnés et les modifications entre les versions sont facilement suivies. Les contrôleurs Kubernetes s’exécutent dans les clusters et rapprochent continuellement l’état du cluster avec l’état souhaité déclaré dans le référentiel Git en extrayant les fichiers du référentiel. Pour plus d’informations, consultez l’architecture de référence AKS.
Gestion des configurations
Azure Automation State Configuration est un outil de gestion DSC géré par la fonctionnalité de configuration invité Azure Policy que vous pouvez utiliser pour écrire, gérer et compiler des configurations DSC PowerShell pour les nœuds dans n’importe quel centre de données cloud ou local. Vous pouvez également utiliser cet outil pour importer des ressources DSC et affecter des configurations aux nœuds cibles.
Azure App Configuration est un service que vous pouvez utiliser pour gérer de manière centralisée les paramètres de votre application et les indicateurs de fonctionnalités. Il fonctionne avec Azure Key Vault pour vous permettre de gérer en toute sécurité un large éventail de configurations d’application dans votre environnement.
Suivi des modifications et inventaire
Le suivi des modifications et l’inventaire à l’aide d’Azure Monitoring Agent effectue le suivi de la dérive de la configuration du système d’exploitation dans les machines virtuelles Azure et les machines virtuelles avec Arc. Cela automatise la détection de dérive, l’inventaire des services en cours d’exécution et les packages installés sur les machines virtuelles de votre charge de travail. Les éléments suivis par le suivi des modifications et l’inventaire sont les suivants :
- Logiciels Windows et Linux installés
- Fichiers Windows et Linux clés
- Clés de Registre Windows
- Services Windows et démons Linux
Liens connexes
- Architecture de référence de référence AKS
- Azure App Configuration
- Azure Automation – State Configuration
- Azure Policy
- Prise en charge cloud-init des machines virtuelles dans Azure
- Configurations GitOps Flux v2 avec AKS et Kubernetes avec Azure Arc
- Microsoft.Resources deploymentScripts
- Recommandations en matière d’auto-guérison et de préservation de soi
Liste de contrôle d’excellence opérationnelle
Reportez-vous à l’ensemble complet de recommandations.