Tutoriel Serverless : Automatiser le patch management avec EC2 Systems Manager

D2SI_Blog_Image_TeamWindows.jpg

Le patch management, ou mise à jour des serveurs, a toujours été problématique pour les administrateurs. Techniquement, le patch management ne présente pas vraiment de challenge: il suffit d’installer les mises à jour régulièrement afin que le système soit protégé et fonctionne dans des conditions optimales. Mais il reste toujours à redémarrer et à vérifier les serveurs. Pour répondre à cette problématique, nous allons voir dans cet article comment automatiser le patch management avec EC2 Systems Manager.

Différents outils de patch management, WSUS pour Microsoft, Automox system management ou EC2 systems manager, permettent de répondre à cet objectif. Nous verrons ici le cas d’une infrastructure AWS avec EC2 Systems Manager, afin d’automatiser le patch management d’instances Windows et Unix, de façon centralisée et Serverless.

Nous avons ici choisi de coupler EC2 Systems Manager avec Jenkins pour l’orchestration et ServiceNow, outil ITSM, pour la gestion des redémarrages (cette partie fera l’objet d’un article spécifique). Pour déployer notre solution, nous avons utilisé les outils suivants :

  • Jenkins pour l’orchestration du patch management, la récupération des IDs d’instances via un tag, la création de snapshot avant l’installation des mises à jours et le redémarrage des instances selon approbation du gestionnaire de l’application via une demande ITSM
  • EC2 systems manager (agent SSM, documents et Run Command) pour l’application des scripts
  • Script Powershell/Shell pour l’application des patchs, la gestion d’erreur et le reporting
  • AWS Lambda pour le transfert des données de reporting S3 vers GCS (Google Cloud Storage)
  • Google Datastudio pour la partie dashboard
  • Terraform pour le déploiement de la fonction Lambda et des documents AWS

EC2 Systems Manager

Amazon EC2 Systems Manager est un service natif et serverless fourni par AWS qui embarque de nombreuses fonctionnalités d’automatisation des tâches d’exploitation sur les instances EC2 :

  • collecte d'inventaire système
  • application de correctifs système d'exploitation (OS)
  • automatisation de la création d'images Amazon (AMI)
  • configuration de systèmes d'exploitation et d'applications.

EC2 Systems Manager permet de gérer à distance et en toute sécurité la configuration des instances managées. Une instance managée est une instance d'Amazon EC2 ou une machine sur site dans un environnement hybride configuré pour EC2 Systems Manager. EC2 Systems Manager se compose de plusieurs fonctionnalités différentes, pour plus de détails, se référer à la documentation fournie par AWS

Agent SSM

L’agent SSM est le lien entre EC2 Systems manager et les instances. L’agent est un prérequis pour l’utilisation d’EC2 Systems manager

Documents

Les documents sont des fichiers JSON, qui décrivent les commandes qui sont exécutées sur les instances durant la plage de maintenance. Amazon fournit des documents afin d'exécuter les mise à jour des instances, avec un reporting.

patch management
patch management

Maintenance Windows

La plage de maintenance sert à gérer la planification des mises à jours, afin de gérer l’installations des patchs et les redémarrages des serveurs Windows. Cette partie ne sera pas utilisée dans notre version finale, car la partie intégration continue se fera via Jenkins. Lors d’une plage de maintenance l’instance peut redémarrer.

patch management
patch management

Targets

La target sert à sélectionner les serveurs à prendre en compte dans la plage de maintenance. Dans notre cas d’utilisation, les instances sélectionnées sont définies en fonction des tags.

patch management
patch management

Tasks

Les “tasks” sont le séquencement AWS pour l’exécution des documents par l’agent SSM sur les instances.

patch management
patch management

Run Command

La fonctionnalité “Run Command” sert à exécuter des commandes directement sur l’instance. Dans notre cas d’usage, Ces commands exécute des “Documents” écrit en JSON, qui lors du lancement la RUN COMMAND sont convertis et envoyer sur l’instance via l’agent SSM.

patch management
patch management

Execution de la run command

patch management
patch management

Retour de la Run Command

patch management
patch management

Dans notre exemple les scripts sont convertis en powershell pour notre partie Windows.  Les différents scripts sont exécutés pour la partie Windows. Les “Run Command” sont exécutées par un Rôle IAM qui peut exécuter des scripts sur les différentes instances "AmazonEC2RoleforSSM”. L’utilisation de Jenkins et les différents “documents” utilisés pour le Patch Management seront définis dans un autre article, EC2 systems Managers - Cas d'usage.