11/05/2024

Installer et configurer le SNMP avec PowerShell DSC

I. Dompter le SNMP avec DSC

Dans ce chapitre on va installer et configurer à partir d’une configuration DSC, une fonctionnalité qui est indispensable sur les serveurs pour la supervision : le SNMP. Inclus nativement à Windows Server, il n’est pas installé par défaut, nous allons donc installer la fonctionnalité pour ensuite la configurer.

Le module « cSNMP » disponible sur GitHub et créé par Fabien Dibot, nous permettra de configurer le SNMP simplement pour définir le nom de la communauté par exemple.

II. cSNMP : Installer le module et lister les ressources

Commençons par installer le module cSNMP à partir d’une console PS ouverte avec les droits administrateurs. Je vous donne la commande mais normalement, on a déjà appris ensemble comment faire.

Install-Module cSNMP

Lorsque ce sera installé, on peut lister les ressources du module :

Get-DscResource -Module Csnmp

Ce qui nous retournera la liste des ressources, qui sont au nombre de 5 dans la version 0.2 du module cSNMP :

get-dscresource-csnmp

III. Création de la configuration

On va découper la construction de la configuration DSC en deux étapes : une première étape pour l’installation de la fonctionnalité SNMP et une seconde étape pour établir la configuration de SNMP que l’on souhaite, à partir du module cSNMP.

A. Installer SNMP avec PowerShell DSC

On déclare la configuration et on importe les deux modules que l’on va utiliser :

Configuration SNMPWindows {
Import-DscResource –ModuleName PSDesiredStateConfiguration
# Module link : https://github.com/fabiendibot/cSNMP
Import-DscResource -ModuleName @{ModuleName="cSNMP";RequiredVersion="0.2"}
}

Vous remarquerez une manière spécifique d’importer le module cSNMP, alors ce n’est pas spécifique à ce module mais c’est une écriture qui permet de charger une version précise d’un module.

En effet, on peut avoir sur un serveur un module dans plusieurs versions, il est alors obligatoire de préciser la version que l’on veut utiliser, sous la forme indiquée dans l’exemple ci-dessus.

On va ensuite venir positionner le bloc contenant les directives de configuration à l’intérieur, ce qui donnera :

Configuration SNMPWindows {
    Import-DscResource –ModuleName PSDesiredStateConfiguration
    # Module link : https://github.com/fabiendibot/cSNMP
    Import-DscResource -ModuleName @{ModuleName="cSNMP";RequiredVersion="0.2"}
    # Noeud localhost
    Node localhost {
        # Installer le service SNMP
        WindowsFeature SNMPService #ResourceName
        {
            Name = "SNMP-Service"
            Ensure = "Present"
        }
        # Installer la couche WMI SNMP
        WindowsFeature SNMPWMI
        {
            Name = "SNMP-WMI-Provider"
            Ensure = "Present"
            DependsOn = "[WindowsFeature]SNMPService"
        }
        # Installer l'outil RSAT pour SNMP
        WindowsFeature SNMPRSAT
        {
            Name = "SNMP-RSAT"
            Ensure = "Present"
            DependsOn = "[WindowsFeature]SNMPService"
        }
    }

Vous allez remarquer que l’on installe le service SNMP ainsi que SNMP WMI qui peut s’avérer utile, et la partie « RSAT » pour avoir l’interface de gestion du service en mode graphique.

Service SNMP = SNMP-Service
Fournisseur WMI pour SNMP = SNMP-WMI-Provider
Outils d’administration SNMP = SNMPRSAT

Pour retrouver facilement le nom d’une fonctionnalité, on s’appuiera sur le commandlet « Get-WindowsFeature » afin d’obtenir le nom « powershellisé » (Je ne sais pas si ça se dit, mais j’ai osé...).

Dans le DependsOn on indique « SNMPService » pour faire référence au premier appel de la ressource « WindowsFeature » qui sert à installer le service SNMP. En fait, ceci permet de dire que si le service SNMP ne s’installe pas alors on n’effectuera pas les deux installations suivantes, elles sont dépendantes du résultat de la ressource WindowsFeature « SNMPService ».

Passons désormais à la déclaration de la config SNMP.

B. Configurer SNMP avec cSNMP

On s’appuiera sur deux ressources : « cSNMPCommunity » et « cSNMPManager » qui permettent respectivement de définir une communauté et de définir l’adresse IP du serveur de supervision.

Note : Pensez qu’avec une commande comme « Get-DscResource cSNMPCommunity -Syntax » vous pourrez obtenir des infos sur la syntaxe d’une ressource avant de l’utiliser.

Voici le bout de code que l’on va inclure dans la configuration globale pour configurer le SNMP :

        # Déclarer la communauté
        cSNMPCommunity SNMPCommunity
        {
            Community = "itconnect"
            Ensure = "Present"
            Right = "ReadOnly"
            DependsOn = "[WindowsFeature]SNMPRSAT"
        }
        # Déclarer l'IP du serveur de supervision
        cSNMPManager SNMPServer {
            Manager = "192.168.1.10"
            Ensure = "Present"
            DependsOn = "[WindowsFeature]SNMPRSAT"
        }

Les paramètres sont simples à comprendre, comme vous pouvez le voir dans l’exemple ci-dessus.

Ce qui donnera le code global suivant :

Configuration SNMPWindows {
    Import-DscResource –ModuleName PSDesiredStateConfiguration
    # Module link : https://github.com/fabiendibot/cSNMP
    Import-DscResource -ModuleName @{ModuleName="cSNMP";RequiredVersion="0.2"}
    # Noeud localhost
    Node localhost{
        # Installer le service SNMP
        WindowsFeature SNMPService #ResourceName
        {
            Name = "SNMP-Service"
            Ensure = "Present"
        }
        # Installer la couche WMI SNMP
        WindowsFeature SNMPWMI
        {
            Name = "SNMP-WMI-Provider"
            Ensure = "Present"
            DependsOn = "[WindowsFeature]SNMPService"
        }
        # Installer l'outil RSAT pour SNMP
        WindowsFeature SNMPRSAT
        {
            Name = "SNMP-RSAT"
            Ensure = "Present"
            DependsOn = "[WindowsFeature]SNMPService"
        }
        # Déclarer la communauté
        cSNMPCommunity SNMPCommunity
        {
            Community = "itconnect"
            Ensure = "Present"
            Right = "ReadOnly"
            DependsOn = "[WindowsFeature]SNMPRSAT"
        }
        # Déclarer l'IP du serveur de supervision
        cSNMPManager SNMPServer {
            Manager = "192.168.1.10"
            Ensure = "Present"
            DependsOn = "[WindowsFeature]SNMPRSAT"
        }
    }
}

IV. Pousser la configuration

Il reste maintenant à générer les fichiers compilés en appelant la configuration par son nom, puis ensuite on va pousser la configuration sur le nœud ciblé.

On utilisera la méthode habituelle en adaptant les valeurs :

# Générer fichier MOF
SNMPWindows
# Exécuter la configuration (push)
Start-DscConfiguration -Path "C:\PowerShellDSC\SNMPWindows\" -Wait -Verbose -Force

Voilà, il suffit d’aller voir sur votre serveur si la fonctionnalité est bien installée et bien configurée, vous pouvez voir ceci dans la console des services puis dans les paramètres du service SNMP. Dans tous les cas, si l’exécution de la configuration DSC se déroule correctement, il n’y a pas de raison ce ne soit pas opérationnel 🙂

Pour finir, voici la page GitHub du module cSNMP : cSNMP GitHub

author avatar
Florian BURNEL Co-founder
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail