Installer et configurer le SNMP avec PowerShell DSC
Sommaire
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 :
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