Bonnes pratiques pour le provisionnement et la configuration automatiques des systèmes et serveurs de périphérie et sur solution Bare Metal

Last reviewed 2023-02-23 UTC

Le présent document suggère des bonnes pratiques pour concevoir et mettre en œuvre des processus de provisionnement et de configuration fiables et automatisés pour les appareils exécutés à la périphérie de votre environnement, tels que les suivants :

Lisez ce document si vous concevez des processus de provisionnement et de configuration pour les appareils de périphérie et IoT, ou si vous souhaitez en savoir plus sur les bonnes pratiques pour le provisionnement de ces types d'appareils.

Le provisionnement et la configuration manuels d'un grand parc d'appareils sont sujets aux erreurs humaines et n'évoluent pas avec votre parc. Par exemple, vous pouvez oublier d'exécuter une tâche de provisionnement ou de configuration critique, ou vous appuyer sur des processus partiellement ou entièrement non documentés. Des processus de provisionnement et de configuration entièrement automatisés et fiables permettent de résoudre ces problèmes. Ils vous aident également à gérer le cycle de vie de chaque appareil, de la fabrication à la mise hors service, en passant par la mise au rebut.

Terminologie

Les termes suivants sont importants pour comprendre comment mettre en œuvre et créer des processus automatisés de provisionnement et de configuration pour vos appareils :

  • Appareil de périphérie : appareil que vous déployez à la périphérie de votre environnement, à proximité des données que vous souhaitez traiter.
  • Processus de provisionnement : ensemble des tâches que vous devez effectuer pour préparer un appareil à la configuration.
  • Processus de configuration : ensemble des tâches que vous devez effectuer pour rendre un appareil prêt à fonctionner dans un environnement spécifique.
  • Gestion de la configuration : ensemble des tâches que vous effectuez en continu pour gérer la configuration de votre environnement et de vos appareils.
  • Image de base : image minimale du système d'exploitation (OS) ou du micrologiciel produite par votre entreprise ou produite par un fabricant de l'appareil ou de l'OS.
  • Image de référence : image immuable du système d'exploitation ou du micrologiciel que vous créez pour vos appareils ou que vous préparez à partir d'une image de base. Les images de référence incluent toutes les données et informations de configuration dont vos appareils ont besoin pour effectuer les tâches qui leur sont attribuées. Vous pouvez préparer diverses images de référence pour accomplir différentes tâches. Les synonymes utilisés pour parler des types d'images de référence sont les stypes, les spins et les archétypes.
  • Image de référence modifiée : image d'OS ou de micrologiciel que vous préparez pour vos appareils en appliquant des modifications minimales à une image de référence ou à une image de base. Les appareils exécutant une image de référence modifiée terminent leur provisionnement et leur configuration lors du premier démarrage, en fonction des besoins des cas d'utilisation que ces appareils doivent prendre en charge.
  • Appareil source : appareil qui amorce votre environnement sans dépendances externes.
  • Démarrage réseau : ensemble des technologies permettant à un appareil d'obtenir un logiciel et toutes les informations de configuration associées à partir du réseau plutôt qu'à partir d'un système de stockage associé à l'appareil.

Bonnes pratiques pour les processus de provisionnement et de configuration

Pour définir des objectifs et éviter les pièges courants, appliquez les bonnes pratiques suivantes pour le provisionnement et la configuration. Chaque bonne pratique est décrite dans sa propre section.

Automatiser les processus de provisionnement et de configuration

Lors de leur premier démarrage, ou chaque fois que cela est nécessaire, vos appareils doivent pouvoir se provisionner et se configurer en utilisant uniquement l'image logicielle installée.

Pour éviter de mettre en œuvre la logique dont vous avez besoin pendant les processus de provisionnement et de configuration, vous pouvez utiliser des outils qui vous fournissent les primitives nécessaires à l'orchestration et à la mise en œuvre de ces processus. Par exemple, vous pouvez utiliser cloud-init et sa source de données NoCloud avec des scripts ou un outil de gestion de configuration exécuté sur l'hôte local comme Ansible, Puppet ou Chef.

Pour concevoir des processus de provisionnement et de configuration fiables, assurez-vous que toutes les étapes et tâches effectuées lors de ces processus sont valides, si possible de manière automatisée. Par exemple, vous pouvez utiliser un framework de tests de conformité automatisés comme InSpec pour vérifier que vos processus de provisionnement et de configuration fonctionnent comme prévu.

Cette bonne pratique vous permet d'éviter les points de défaillance uniques et la nécessité d'une intervention manuelle pour terminer le provisionnement et la configuration de l'appareil.

Éviter les appareils à usage spécial

Lorsque vous concevez vos appareils de périphérie, minimisez leurs variances en termes d'usage et de spécialisation. Cette recommandation ne signifie pas que tous vos appareils de périphérie doivent être égaux ou partager le même objectif, mais ils doivent être aussi homogènes que possible. Par exemple, vous pouvez définir des archétypes d'appareil en fonction des types de charges de travail auxquels ils sont dédiés. Vous pouvez ensuite déployer et gérer vos appareils en fonction des propriétés de ces archétypes.

Pour être sûr de suivre cette bonne pratique, vérifiez que vous pouvez choisir un appareil au hasard parmi ceux d'un archétype donné, puis procédez comme suit :

  • Traitez l'appareil comme vous le feriez avec d'autres appareils du même archétype. Cela permettra de démontrer votre efficacité opérationnelle.
  • Remplacez l'appareil par des appareils du même archétype, sans personnalisation supplémentaire. Cela permettra de démontrer que vous avez correctement mis en œuvre ces archétypes.

Cette bonne pratique vous permet de réduire la variance dans votre parc d'appareils, ce qui réduit la fragmentation dans votre environnement et dans les processus de provisionnement et de configuration.

Utiliser des appareils source pour amorcer votre environnement

Lors du provisionnement et de la configuration de vos appareils, vous pouvez rencontrer un problème de dépendance circulaire : vos appareils doivent disposer d'une infrastructure pour se provisionner et se configurer, mais cette infrastructure n'est pas en place, car vous devez toujours la provisionner la configurer.

Vous pouvez résoudre ce problème avec des appareils source. Les appareils source ont une fonction spéciale temporaire. Une fois les tâches pour lesquelles l'objectif spécial a été conçu terminées, l'appareil adapte son comportement et son état en fonction de l'archétype approprié.

Par exemple, si vous utilisez cloud-init pour initialiser automatiquement vos appareils, vous devrez peut-être configurer une source de données NoCloud cloud-init comme suit :

  1. Fournissez les données de source de données NoCloud à l'appareil source via un système de fichiers.
  2. Attendez que l'appareil source termine son provisionnement et sa configuration à usage spécial, y compris la diffusion des données de source de données NoCloud sur d'autres appareils réseau.

    Les processus de provisionnement et de configuration de l'appareil source passent ensuite en attente jusqu'à ce que les conditions pour supprimer l'objectif spécial temporaire de l'appareil source soient remplies. Voici quelques exemples de ces conditions :

    • Y a-t-il d'autres appareils dans l'environnement qui diffusent les données sources de données NoCloud sur le réseau ?
    • Le cluster comporte-t-il suffisamment de nœuds ?
    • La première sauvegarde est-elle terminée ?
    • Le site de reprise après sinistre est-il prêt ?
  3. Provisionnez et configurez d'autres appareils qui téléchargent les données de source de données NoCloud sur le réseau à partir de l'appareil source. Certains appareils doivent pouvoir diffuser les données de source de données NoCloud sur le réseau.

  4. Les processus de provisionnement et de configuration de l'appareil source sont rétablis, car les conditions permettant de supprimer l'objectif spécial de l'appareil source sont remplies : d'autres appareils du parc diffusent les données de source de données NoCloud sur le réseau.

  5. Les processus de provisionnement et de configuration de l'appareil source suppriment l'objectif spécial, ce qui rend l'appareil source impossible à distinguer des autres appareils du même archétype.

Cette bonne pratique vous permet de démarrer votre environnement même sans assurer la compatibilité avec l'infrastructure et sans respecter les bonnes pratiques de la section Éviter les appareils à usage spécial.

Minimiser l'état de vos appareils

Lors de la conception de vos appareils de périphérie, évitez autant que possible de stocker des informations avec état. Les appareils de périphérie peuvent disposer de ressources matérielles limitées ou être déployés dans des environnements difficiles. La réduction des informations avec état dont ils ont besoin simplifie les processus de provisionnement, de configuration, de sauvegarde et de récupération, car vous pouvez traiter ces appareils de manière homogène. Si un appareil de périphérie sans état rencontre une panne et ne peut pas être restauré, par exemple, vous pouvez le remplacer par un autre appareil de même archétype avec des interruptions ou une perte de données minimales.

Cette bonne pratique vous permet d'éviter les problèmes imprévus liés à une perte de données ou à une trop grande complexité de vos processus. La plupart des complexités sont liées à la nécessité de gérer un parc d'appareils hétérogènes.

Créer automatiquement les images d'OS et de micrologiciel

Pour éviter les tâches coûteuses de provisionnement et de configuration lors du premier démarrage de vos appareils et pour économiser les ressources de l'appareil, personnalisez les images d'OS et de micrologiciel avant de les rendre disponibles. Vous pouvez par exemple installer des dépendances directement dans l'image plutôt que de les installer lorsque chaque appareil démarre pour la première fois.

Lors de la préparation des images d'OS et de micrologiciel pour vos appareils, le travail commence sur une image de base. Lorsque vous personnalisez l'image de base, vous pouvez effectuer les opérations suivantes :

  • Produire des images de référence Les images de référence contiennent toutes les dépendances dans l'image afin que vos appareils n'aient pas à les installer au premier démarrage. La production d'images de référence est une tâche complexe, mais elle permet à vos appareils d'économiser du temps et des ressources lors du provisionnement et de la configuration.
  • Produire des images de référence modifiées Contrairement aux images de référence, les appareils exécutant des images de référence modifiées effectuent tous les processus de provisionnement et de configuration lors de leur premier démarrage. La production d'images de référence modifiées peut être moins complexe que la production d'images de référence, mais les appareils qui exécutent ces images consacrent plus de temps et de ressources lors du provisionnement et de la configuration.

Vous pouvez personnaliser les images d'OS et de micrologiciel dans le cadre de vos processus d'intégration et de déploiement continus (CI/CD), et rendre les images personnalisées automatiquement disponibles pour vos appareils après validation. Les processus CI/CD que vous mettez en œuvre à l'aide d'un outil tel que Cloud Build, GitHub Actions, GitLab CI/CD ou Jenkins peuvent effectuer les séquences suivantes :

  1. Effectuer une validation automatisée des images personnalisées.
  2. Publiez les images personnalisées dans un dépôt auquel vos appareils peuvent accéder.

Si votre environnement CI/CD et le système d'exploitation ou le micrologiciel pour lesquels vous devez créer des images utilisent des architectures matérielles différentes, vous pouvez utiliser des outils tels que QEMU pour émuler ces architectures. Par exemple, vous pouvez émuler l'architecture matérielle de la famille ARM sur une architecture x86_64.

Pour personnaliser vos images d'OS ou de micrologiciel, vous devez pouvoir les modifier et les vérifier dans un environnement de test avant de les installer sur vos appareils de périphérie. Des outils tels que chroot vous permettent de modifier virtuellement (mais pas physiquement) le répertoire racine avant d'exécuter une commande.

Par exemple, l'exécution de la commande chroot /mnt/test-image apt-get install PACKAGENAME entraîne le comportement du système comme si /mnt/test-image était le répertoire racine de l'image d'OS ou de micrologiciel plutôt que /, et installe PACKAGENAME dans ce répertoire.

Cette bonne pratique vous permet de personnaliser les images d'OS et de micrologiciel avant de les rendre disponibles pour vos appareils.

Orchestrer de manière fiable les charges de travail s'exécutant sur vos appareils

Si vos appareils sont compatibles avec les charges de travail hétérogènes, vous pouvez utiliser les outils suivants pour les orchestrer et gérer leur cycle de vie :

  • Un système d'orchestration de charge de travail : Utiliser un système d'orchestration de charge de travail, tel queKubernetes, convient aux charges de travail ayant des exigences complexes en termes d'orchestration ou de gestion du cycle de vie. Ces systèmes sont également adaptés aux charges de travail couvrant plusieurs composants. Dans les deux cas, cela signifie que vous n'avez pas à mettre en œuvre vous-même cette logique d'orchestration et de gestion du cycle de vie de la charge de travail. Si vos appareils sont limités en ressources, vous pouvez installer une distribution Kubernetes légère qui nécessite moins de ressources que la version canonique, comme MicroK8s, K3s ou les clusters Anthos sur solution Bare Metal installés avec le profil Edge.
  • Un système init : l'utilisation d'un système init, tel que systemd, convient aux charges de travail avec les caractéristiques suivantes :

    • Exigences d'orchestration simples
    • Ressources insuffisantes pour prendre en charge un système d'orchestration de charge de travail
    • Charges de travail ne pouvant pas conteneurisées

Une fois le système en place pour orchestrer vos charges de travail, vous pouvez également l'utiliser pour exécuter des tâches faisant partie de vos processus de provisionnement et de configuration. Si vous devez exécuter un outil de gestion de la configuration dans le cadre de vos processus de provisionnement et de co