Apprivoiser WSUS avec Ansible et plus


Eh bien, il est maintenant temps de faire des mises à jour de Windows des amis avec le monde Open Source. Dans cet article, nous diversifions la vie en intégrant Ansible à toutes les sources possibles de mises à jour pour les machines Windows. Bien que les capacités du système soient bien plus vastes que le simple déploiement de mises à jour sur les serveurs et les postes de travail, vous devez commencer quelque part.


Dans le même temps, nous nous débarrasserons des inconvénients gênants du WSUS si vous préférez la «vieille école».


Pourquoi nous n'aimons pas WSUS


Je ne parlerai pas de la configuration des services de mise à jour de Windows Server, car c'est trivial. Concentrez-vous sur les inconvénients.



L'interface WSUS n'a pas beaucoup changé au cours de l'histoire.


Impossibilité d'installer sur demande . En effet, WSUS fonctionne bien pour un fonctionnement régulier - les mises à jour sont facilement configurées et installées sur le réseau local lorsque les ordinateurs sont éteints. Mais si vous avez un besoin urgent d'installer des correctifs de sécurité, vous devrez sortir avec des scripts et des solutions pour exécuter ces mêmes scripts. Notre matériel « 1000 ++ façon d'exécuter des commandes sur un ordinateur distant » peut vous y aider.


L'absence d'un moyen régulier d'installer des mises à jour de logiciels tiers . S'il existe un serveur de mise à jour, il semble raisonnable de l'utiliser non seulement pour les mises à jour logicielles MS, mais pour d'autres solutions. Par exemple, des vulnérabilités ne sont pas régulièrement découvertes dans Adobe Flash Player susmentionné à intervalles réguliers, et je voudrais également faire plaisir aux utilisateurs avec de nouvelles fonctionnalités FireFox. Pour installer des mises à jour via WSUS, vous devez utiliser des solutions tierces comme WSUS Package Publisher . Vous pouvez voir des exemples de configuration dans l'article « Installation de tout logiciel à l'aide de WSUS - 2 ».


Utilisation de la base de données Windows intégrée . Dans une installation standard, WSUS utilise le WID - Base de données interne Windows. Il s'agit essentiellement d'un petit serveur SQL intégré avec une base de données. En cas de dysfonctionnements ou de conflits - par exemple, si vous avez Remote Desktop Connection Broker et WSUS sur le même serveur - vous devez réparer cette base de données, configurer les droits d'accès et vous amuser à tous points de vue. Oui, et la sauvegarde ne ferait pas de mal. Heureusement, WSUS peut également utiliser le SQL classique. Pour migrer la base de données WSUS, vous pouvez utiliser l'instruction Migrer la base de données WSUS de WID vers SQL depuis Microsoft.


La nécessité d'un service et d'une configuration non évidente des clients défaillants. Comme c'est le cas avec les produits Microsoft, WSUS commence tôt ou tard à ralentir: les clients ne peuvent pas s'en emparer longtemps et télécharger les mises à jour. Une collection de conseils et d'optimisations peut être trouvée dans l'article « Accélérer WSUS » et dans les commentaires.


Bien sûr, vous pouvez vivre avec ces inconvénients, mais vous pouvez également vous faciliter la vie avec d'autres outils, en les utilisant conjointement avec WSUS et sans lui.


Installer les mises à jour à l'aide d'Ansible


Presque n'importe quel système de gestion de configuration peut faciliter le travail avec les mises à jour. Analysons un exemple basé sur Ansible pour installer des mises à jour à la demande.


Organiser un holivar, ce qui est mieux avec les systèmes gratuits - Ansible, Chef, Puppet ou même Salt, il n'y a pas la moindre envie. Ansible a été choisi pour l'absence de besoin d'agents et pour la facilité de configuration. Et, bien sûr, à cause de Python: après tout, ce langage est beaucoup plus facile à apprendre pour l'automatisation des débutants, contrairement à Ruby.

Il convient de noter qu'en plus de résoudre le problème, il sera utile de vous familiariser avec les principes de fonctionnement de ces systèmes. À moins, bien sûr, que vous n'ayez encore eu du plaisir à installer Streisand , surtout lorsque quelque chose se passe mal dans le processus. Et si vous utilisez déjà Ansible ou d'autres solutions à la mode, vous pouvez facilement installer des mises à jour. Je recommande de lire les bases d'Ansible dans l'article « Manuel Ansible », et ci-dessous est une instruction étape par étape pour travailler avec les mises à jour.


Tout d'abord, préparez le serveur Ansible. Presque n'importe quelle distribution GNU \ Linux fera l'affaire, mais je donnerai des exemples de commandes pour Ubuntu Server (comme cela a toujours été le cas).


Tout d'abord, installez le gestionnaire de packages pour les applications Python:


apt-get install python-pip pip install --upgrade pip pip install --upgrade virtualenv 

Ensuite, nous devons installer le package pywinrm pour se connecter directement aux systèmes Windows et au système Ansible :


 sudo pip install pywinrm sudo pip install ansible 

Vous pouvez vérifier l'installation à l'aide de la commande ansible --version .



Vérification de l'installation.


Au lieu du package dans la théorie pywinrm, vous pouvez utiliser n'importe quel autre outil pour gérer Windows à partir d'une machine Linux. Certains d'entre eux sont abordés dans l'article « Pollinisation croisée: gestion de Linux sous Windows, et vice versa ».

Vous devez maintenant activer la connexion à Windows via WinRM. Pour ce faire, un script ConfigureRemotingForAnsible.ps1 prêt à l'emploi est disponible sur GitHub . Eh bien, vous savez déjà comment exécuter des scripts sur des machines distantes.


Vous pouvez vérifier la connexion à Windows avec la commande:


 ansible windows -m win_ping 


Vérification de la connexion réussie.


Vous pouvez maintenant commencer à créer un playbook. Le fait que les développeurs d'Ansible aient déjà pensé pour nous et créé le module win_updates , juste pour résoudre de tels problèmes, nous facilitera la vie.


Le Playbook est une «instruction» qui indique au système de gestion de la configuration quoi faire. Pas à pas, bien sûr.

Tout playbook est un fichier yml et est un ensemble de directives - chaque module a le sien. Le module winupdate vous permet d'utiliser les directives suivantes (les valeurs par défaut sont en gras):


Le titreValeurLa description
nom_catégorieCandidature
Connecteurs
CriticalUpdates
DefinitionUpdates
Developerkits
Packs de fonctionnalités
Orientation
SecurityUpdates
Servicepacks
Des outils
UpdateRollups
Mises à jour
Catégorie de mises à jour.
liste blancheMettre à jour le modèle de numéro ou de nom.Le nombre de mises à jour installées directement est KB01234 ou le modèle de nom d'expression régulière PowerShell.
liste noireMettre à jour le modèle de numéro ou de nom.Directement le nombre de mises à jour qui n'ont pas besoin d'être installées, comme KB01234 ou le modèle de nom sous la forme d'une expression régulière PowerShell.
redémarreroui
non
Un redémarrage est-il nécessaire après la mise à niveau?
reboot_timeoutsecondes, 1200Quel est le temps d'attendre la voiture après le redémarrage.
étatinstallé
recherché
Que ce soit pour installer des mises à jour ou simplement rechercher.
log_pathchemin du fichierLe journal d'installation et le dossier doivent exister.

Ainsi, le playbook suivant convient à l'installation de certaines mises à jour:


 - name: Install specific updates based on the KBs for those updates win_updates: category_name: - SecurityUpdates whitelist: - KB4073819 - KB4074228 

Et si vous avez juste besoin de calculer le nombre de mises à jour manquantes, le playbook sera comme ceci:


  – name: Check for missing updates win_updates: state=searched register: update_count 

Pour installer toutes les mises à jour disponibles, suivies d'un redémarrage, il y aura un playbook similaire:


 - name: Install all critical and security updates win_updates: category_names: - CriticalUpdates - SecurityUpdates - UpdateRollups state: installed register: update_result - name: reboot host if required win_reboot: when: update_result.reboot_required 

Permettez-moi de vous rappeler que vous avez besoin d'un fichier d'inventaire pour travailler avec la liste des serveurs. Par exemple, ceci:


 [DCs] dc1.mydomain.local dc2.mydomain.local [AppServers] app1.mydomain.local app2.mydomain.local [DBServers] db1.mydomain.local db2.mydomain.local 

Et maintenant, pour installer les mises à jour uniquement sur les contrôleurs de domaine, vous pouvez utiliser le playbook:


 - hosts: DCs tasks: - name: Choose which Windows updates to install win_updates: category_names: - SecurityUpdates - CriticalUpdates - UpdateRollups 

L'équipe qui effectuera toutes ces opérations sera la suivante:


 ansible-playbook -i inventory.yml -s windowsupdates.yml 

Un lecteur attentif peut demander la source des mises à jour téléchargées. La source sera celle qui est configurée sur l'ordinateur: que ce soit Windows Update sur Internet ou WSUS local. Même si vos mains n'ont pas atteint les paramètres WSUS, vous pouvez donner la commande pour installer les mises à jour urgentes nécessaires, surtout si les pièces Lego ont déjà débordé sous vos pieds.


Il reste à ajouter qu'il n'est pas nécessaire d'utiliser exactement Ansible. Par exemple, pour le système de gestion de configuration Chef, vous pouvez utiliser le Cookbook Wsus Client ou le boxstarter plus sophistiqué . Des modules similaires existent pour Puppet. En général, presque n'importe quel système de gestion de configuration peut faire quelque chose de similaire, y compris MS SCCM.


Enfin, je vais vous donner quelques outils supplémentaires qui m'intéressent.


Autres systèmes et solutions


WSUS hors ligne . Un programme qui vous permet de télécharger les mises à jour nécessaires dans un seul package, si nécessaire, peut être packagé en ISO. Vous pouvez également placer le package dans un dossier réseau et installer des mises à jour avec des scripts, sans déployer WSUS complet.


Gestion des correctifs par Comodo. Le système d'installation des mises à jour pour Windows et autres logiciels. Contrairement aux autres solutions, c'est gratuit.



Interface Comodo Patch Management.


Opsi . Un système gratuit et intéressant qui prend en charge l'installation non seulement des mises à jour, mais également des systèmes d'exploitation, ainsi que de l'inventaire.


BatchPatch . Le seul système payant de la liste. Vous permet d'installer un logiciel, de le mettre à jour, comme Windows, et bien plus encore. Il diffère dans la conception à l'ancienne, ainsi que dans le coût non pas pour le nombre d'hôtes hébergés, mais pour les utilisateurs du programme, c'est-à-dire les administrateurs. C'est peut-être l'une des rares solutions qui se positionnent comme un analogue de WSUS. Le prix commence à 400 $.



Interface BatchPatch.


Dans les commentaires, ajoutez vos outils préférés pour travailler avec les mises à jour et plus encore.

Source: https://habr.com/ru/post/fr414751/


All Articles