vRealize Log Insight : Ajout de Content packs

Log Insight est un magnifique outil de collecte de Logs et depuis l’update licensing vRealize Cloud 7, il est inclus dés la version Standard alors que précédemment c’était un produit payant.

 

 

Les content Packs :

Il est possible de rendre Log Insight encore plus intelligent, en y ajoutant des “Contents Pack” in french “Pack de contenu” on va garder la version anglaise.
Ces modules permettent de pouvoir traiter des logs provenant d’autres systèmes et de les corréler avec ceux de VMware pour une analyse fine est intelligente.

 

Il en existe pour les produits VMware et autres constructeurs :

  • VMware NSX
  • vRealize Operation
  • VMware Evo Rail
  • Microsoft
  • Cisco
  • Hitachi
  • Brocade
  • EMC

 

 

Pour en ajouter 2 manières 

Se rendre à la page Solution Exchange : https://solutionexchange.vmware.com

Et télécharger le fichier XXXX.PAK

 

 

 

Ou directement depuis votre portail Log Insight

Tout en haut à droite cliquer sur : Packs de contenu

2016-03-30_16h22_19

 

 

 

 

 

 

 

Nous allons installer le pack pour vRealize Operations

Cliquer sur l’icone puis installer

2016-03-30_16h23_52

 

 

Puis tout en haut à droite dans “Administration”

2016-03-30_16h27_21

 

 

 

 

 

 

 

 

Renseigner les infos de votre vRops

2016-03-30_16h28_09

 

 

 

 

Aussi simple que ça

 

2016-03-30_16h30_18

 

 

 

 

 

 

 

 

 

 

Share

SexiLog – VMware Logs Analysis

 

 sexilog21

 

Sortie hier, cette appliance était très attendue. Nous avons donc téléchargé l’ova de SexiLog. Ce logiciel a été développé par nos compères blogger de chez hypervisor.fr et vmdude.fr. Cette appliance est basé sur ELK stack (ElasticSearch, Logstash et Kibana) :

 

sexilog01

 

Vous pouvez l’utiliser pour analyser les logs de vos ESXi, Windows, de votre vCenter et de Veeam.

Voici les ports à utiliser pour chacun de ces éléments :

  • UDP/514 pour ESXi
  • UDP/162 pour les traps SNMP
  • UDP/1514 pour les logs vCenter
  • UDP/1515 pour les eventlog Windows

 

Par défaut, l’ova est configuré pour recevoir 1500 messages par secondes, ce qui correspond à un environnement de 20 ESXi. SI vous avez besoins d’augmenter cela vous pouvez jouer sur la mémoire/CPU et la taille des disques de la VM. 

 

Installation de l’OVA

 

Déployez l’ova dans votre infrastructure et lancez la VM. Au boot connectez-vous avec le login root et le mot de passe Sex !Log.

Attention le clavier est en qwerty US.

 

sexilog02

 

En premier lieu, si vous souhaitez passer en AZERTY, dans le menu tapez 6 et validez le changement en fr :

 

sexilog03

 

SexiLog est préconfiguré pour récupérer une IP en DHCP. Si vous avez un DHCP de configuré, vous devez récupérer une IP automatiquement. Si vous souhaitez utiliser une IP statique, dans le menu utilisez l’option 5. Saisissez n pour la configuration en DHCP et renseignez ensuite les informations réseaux ip, netmask, gateway, dns et hostname. Vous ne devez renseigner qu’un seul DNS :

 

sexilog04

 

Pour prendre en compte les changements l’appliance va rebooter :

 

sexilog05

 

Au reboot, tester la connectivité de votre appliance. Vous devez également voir les services elasticsearch, logstash, riemann et node-app en RUNNING.

 

sexilog06

 

L’option 4 du menu permet de redémarrer les services de SexiLog, à savoir elasticsearch, logstash, riemann et node-app. L’option 5 permet de changer vos paramètres réseaux, l’option 6 changer de type de clavier et l’option 7 de configurer le service Riemann.

Nous allons ici, configurer le service Riemann. Saisissez 7 et y :

 

sexilog07

 

Renseignez l’adresse de votre serveur SMTP, l’adresse mail utilisé pour envoyer les mails et l’adresse mail qui les recevra. Validez les informations :

 

sexilog08

 

Redirigez vos logs ESXI vers l’appliance SexiLog 

 

Pour cela, depuis les advanced settings de vos ESXi, renseignez dans Syslog, global, Syslog.global.loghost la valeur suivante : udp://ipsexilog :514

 

sexilog09

 

Vérifiez que le firewall de vos ESXi a le port 514 ouvert :

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2003322

 

Maintenant que votre appliance est configuré, connectez-vous via un navigateur web sur l’url http://ipsexilog

Vous arrivez sur la page suivante :

 

sexilog10

 

Vous devez voir les informations remontées par vos ESXi.

Dans « QUERY » vous pouvez tapez les mots clés de vos recherches. Par exemple un ESXi en particulier :

 

sexilog11

 

Une tâche :

 

sexilog12

 

Vous pouvez également effectuez plusieurs recherches en simultanées en cliquant sur le + dans la barre de recherche. Vous pouvez également en cliquant sur le rond de couleur changer la couleur pour chaque recherche :

 

sexilog13

 

On voit ici les alertes remontées en rouge et les logs de mon ESXi en jaune.

Une autre recherche sur 4 ESXi différents :

 

sexilog14

 

Dans All Events, vous allez retrouver tous les évènements si vous n’avez pas fait de recherche particulière ou les évènements correspondant à vos recherches :

 

sexilog15

 

Dans All Events, cliquez sur la flêche -> (show field list) et vous pouvez voir la partie Fields qui correspond à des types d’évènements. Là encore très intéressant, si vous souhaitez faire une recherche sur un esxi en particulier vous pouvez dans Query renseigner le nom de l’esxi et dans Fields sélectionnez la catégorie qui vous intéresse, par exemple esx_problem ou alert qui peuvent vous remonter tous les problèmes et alertes pour la recherche effectuée :

 

sexilog16

 

Juste en dessous de Fields, il y a All / Current. Selon la recherche que vous effectuez et les logs retournés, dans Current vous trouverez les catégories trouvées dans les logs retournés. Par exemple sur la recherche d’un ESXi, je vois ici que j’ai que 40 catégories trouvées dans les logs. Si vous cliquez sur Current, la liste des catégories trouvées s’affiche, vous pouvez ensuite sélectionner la catégorie que vous voulez :

 

sexilog17

 

Lorsque vous avez un log dans la liste, cliquez dessus pour avoir plus d’information :

 

sexilog18

 

Vous pouvez bien entendu créer vos propres dashboard. Celui par défaut se nomme SexiHome. Il y en a plusieurs prédéfinis se trouvant en haut à droite dans « Load » :

 

sexilog19

 

Chaque Dashboard à une fonction bien précise, on vous laissera les découvrir par vous-même, voir créer les votre. Par exemple le vMotionDowntime, FailedTo ou encore le dashboard Kommandantur remontant les alerts :

 

sexilog20

 

Récupérer les logs de Veeam

 

Pour récupérer les logs des Jobs Veeam, sur votre serveur Windows, activez la fonctionnalité SNMP :

 

 sexilog24

 

 

Configurez le service pour utiliser la communauté public :

 

sexilog25

 

sexilog26

 

Allez dans les Options de Veeam. Pour cela, dans le menu en haut à gauche, sélectionnez Options :

 

sexilog27

 

Allez dans l’onglet SNMP Settings et renseignez dans Receiver, l’ip ou FQDN de votre serveur SexiLog, le port 162 et la communauté Public :

 

sexilog28

 

Ensuite, pour chaque Job, éditez vos jobs et allez dans le menu storage :

 

sexilog29

 

Cliquez sur l’onglet Advanced et allez dans l’onglet Navigation et cochez « Send SNMP notifications for this job » :

 

sexilog30

 

Lancez vos jobs et depuis l’interface web de votre appliance SexiLog, chargez le dashboard VeeamBR :

 

sexilog31

 

SexiLog vous aidera à voir la progression de vos jobs dans le temps. Cliquez sur Query et remplacez les champs « VEEAM_backupJobName.raw.job0x » par « snmptrapd  AND « NomDuJob » le nom du ou des jobs à surveiller :

 

sexilog32 

 

Dans Fields, sélectionnez les catégories correspondant à Veeam afin de pouvoir mieux analyser les résultats de vos Jobs :

 

sexilog33

 

Vous pouvez ensuite d’un coup d’œil voir ce qui va ou non :

 

sexilog34

 

Pour sauvegarder votre dashboard personnaliser, en haut à droite cliquez sur Save :

 

sexilog35

 

Vous le retrouver dans la liste de vos dashboards :

 

sexilog36

 

 

Troubleshooting Veeam / SexiLog :

Nous avons rencontré un problème lors de la récupération des traps SNMP du serveur Veeam par SexiLog. La trap était bien reçu mais mal interprétée et le tag associé à la trap était “_grokparsefailure” au lieu d’un tag “VEEAM”.  Par conséquent, les catégories Veeam n’était pas disponible dans Fields.

Après troubleshoot, on a trouvé dans les logs de /var/log/logstash/logstash.err, le message suivant :

/opt/logstash/vendor/bundle/jruby/1.9/gems/jls-grok-0.10.12/lib/grok-pure.rb:144 warning: character class has ‘-‘ without escape

Le caractère “-“ nous a mis la puce à l’oreille puisque le FQDN de notre serveur veeam était veeam-srv. Nous l’avons renommé en veeamsrv et désormais tout fonctionne très bien.

Il faut donc éviter les ‘-‘ dans le FQDN de votre serveur Veeam, cela peut poser problème.

 

 

Récupérer les logs de votre appliance vCenter

 

Afin de récupérer les logs de votre appliance VCSA, connectez-vous sur votre VCSA en ssh ou en shell puis allez dans /etc/syslog-ng :

 

sexilog42

 

Editez le fichier syslog-ng.conf et ajoutez les lignes ci-dessous à la fin du fichier :

 

source vpxd {

file(“/var/log/vmware/vpx/vpxd.log” follow_freq(1) flags(no-parse));

file(“/var/log/vmware/vpx/vpxd-alert.log” follow_freq(1) flags(no-parse));

file(“/var/log/vmware/vpx/vws.log” follow_freq(1) flags(no-parse));

file(“/var/log/vmware/vpx/vmware-vpxd.log” follow_freq(1) flags(no-parse));

file(“/var/log/vmware/vpx/inventoryservice/ds.log” follow_freq(1) flags(no-parse));

};

destination loginsight { udp(“10.161.129.174”); };

log { source(vpxd); destination(loginsight); };

 

 

sexilog43

 

 

Redémarrer le service syslog :

 

sexilog44

 

Depuis votre appliance SexiLog, faites une recherche sur le FQDN ou l’ip de votre VCSA, vous devriez voir arrivez les logs :

 

sexilog45

 

 

Récupérer les logs de votre vCenter Windows

 

Afin de récupérer les logs de votre vCenter windows, installer nxlog sur votre serveur.

Téléchargeable ici : http://nxlog.co/products/nxlog-community-edition/download

Installer le sur votre serveur :

 

sexilog37

 

Récupérer ensuite le fichier de configuration ici : https://github.com/sexilog/sexilog/blob/master/nxlog/nxlog.conf

 

Remplacer le fichier C:\Program Files (x86)\nxlog\conf\nxlog.conf par celui téléchargé et éditez la ligne xx « 127.0.0.1 » par l’ip ou le FQDN de votre appliance SexiLog :

 

sexilog38

 

Démarrer ensuite le service nxlog :

 

sexilog39

 

Depuis votre appliance SexiLog, faites une recherche sur l’ip ou le FQDN de votre vCenter. Vous devriez voir les logs arrivez :

 

sexilog40

 

Si vous souhaitez changer la vue de votre graphe, cliquez sur le View à gauche de votre graphe et décochez Bars et sélectionnez lines :

 

sexilog41

 

Ici encore, même topo que pour les ESXi vous pouvez effectuer des recherches par mots clés et aussi utiliser les catégories dans Fields.

 

 

 

Cet article n’est pas encore terminé, nous l’alimenterons au fur et à mesure que nous utiliserons l’outil. Cependant, vous l’aurez compris, après une première approche on est vraiment séduit par ce SexiLog très facile d’utilisation et fournit avec des dashboards très utiles et qui de plus est gratuit et de fabrication française.

 

On remercie et félicite Raphael Schitz et Frédéric Martin pour leur superbe travail.

 

 

Share

Créer la base de données SQL pour vCenter 6.0

 

 

Avant d’installer votre vCenter 6.0 avec une base externe, vous devez préparer sur votre serveur externe la base de données.

Télécharger l’iso de vCenter 6.0 sur le site de VMware

Sur un serveur Windows 2012 R2, nous avons installé MS SQL 2014. Avec vCenter 6.0, vous pouvez installer les bases de données suivantes :

  • Microsoft SQL Server 2008 R2 SP1
  • Microsoft SQL Server 2008 R2 SP2
  • Microsoft SQL Server 2012
  • Microsoft SQL Server 2012 SP1
  • Microsoft SQL Server 2014
  • Oracle 11g R2 11.2.0.4
  • Oracle 12c

 

Ensuite monter l’iso d’installation de vCenter 6 sur votre serveur de base de données et aller dans le dossier vCenter-Server\dbschema. Vous trouverez le script DB_adn_schema_creation_scripts_MSSQL :

 

vcenter6db0

 

À noter que vous avez également les scripts de création pour les bases de type Oracle et postgreSQL (pas compatible).

Voici le script de creation de base pour MSSQL :

use [master]
go

CREATE DATABASE [VCDB] ON PRIMARY
(NAME = N’vcdb’, FILENAME = N’C:\VCDB.mdf’ , SIZE = 10MB , FILEGROWTH = 10% )
LOG ON
(NAME = N’vcdb_log’, FILENAME = N’C:\VCDB.ldf’ , SIZE = 1000KB , FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
go

use VCDB
go

sp_addlogin @loginame=[vpxuser], @passwd=N’vpxuser’, @defdb=’VCDB’, @deflanguage=’us_english’
go
ALTER LOGIN [vpxuser] WITH CHECK_POLICY = OFF
go
CREATE USER [vpxuser] for LOGIN [vpxuser]
go
CREATE SCHEMA [VMW]
go
ALTER USER [vpxuser] WITH DEFAULT_SCHEMA =[VMW]
go

sp_addrolemember @rolename = ‘db_owner’, @membername = ‘vpxuser’
go

use MSDB
go
CREATE USER [vpxuser] for LOGIN [vpxuser]
go
sp_addrolemember @rolename = ‘db_owner’, @membername = ‘vpxuser’
go

 

Sur votre serveur, lancez la console SQL Server Management Studio de votre base de données, loguez-vous et ouvrez le script dans SQL Server Management Studio et modifier les chemins de la base et le mot de passe (mot de passe complexe) :

 

vcenter6db01

 

Enregistrer ce fichier avec une extension .sql.

Vous pouvez également modifier le nom du user, la taille des fichiers, etc selon votre infrastructure et vos besoins.

Exécutez ensuite le script depuis SQL Management Studio. Une fois l’exécution terminée, vérifiez que la base et le compte sont créés :

 

vcenter6db02

 

Votre base est maintenant utilisable avec un vCenter 6.0.

Avant d’installer votre vCenter 6.0, il vous faut créer le connecteur SQL system DSN sur votre serveur où sera installé vCenter 6.0.

 

Creation du connecteur SQL :

Ouvrez ODBC Data Source Administrator sur votre serveur et dans l’onglet System DSN, cliquez sur Add :

 

vcenter6db03

 

(Vous devrez certainement au préalable installer le driver SQL server native client 11 disponible ici : sqlncli )

 

Sélectionnez SQL Server Native Client 11 for SQL Server et cliquez sur Finish :

 

vcenter6db04

 

Renseignez un nom pour le DSN, ici vcenter6 et renseignez le FQDN du serveur de base de données ainsi que le nom de l’instance si c’est une instance nommée :

 

vcenter6db05

 

Authentifier vous soit avec un compte sa de votre instance :

 

vcenter6db06

 

Sélectionnez la base que vous avez créé à l’aide du script :

 

vcenter6db07

 

Faites un test de connectivité :

 

vcenter6db08

 

Cliquez sur Next puis Finish. Votre connecteur est créé :

 

vcenter6db09

 

Pour l’installation du vCenter 6.0 suivre cet article

 

 

Share

Automatiser l’installation SQL 2008/2012 et Service Pack

 

 

Afin de lancer une installation automatique et silencieuse d’une base SQL sur vos serveurs windows, vous pouvez utiliser des scripts unattended. Cet article est lié au déploiement automatiser des VMs windows. (voir l’article)

Dans notre cas, nous souhaitions pouvoir installer de façon automatiser une base SQL 2008  avec les services pack ou une base SQL 2012 avec les services pack et ce juste après l’application du sysprep.

Pour information, nous avons intégrer dans nos templates, les scripts et sources d’installation dans C:\Install-SQL.

Dans notre Sysprep, nous avons fait exécuter au premier boot un script effectuant plusieurs configuration (voir l’article) et au sein duquel nous avons posé la question à l’utilisateur s’il voulait installer une base de données ou non et si oui quelle version :

echo “r"
Write-host "######################### INSTALLER BASE DE DONNEES ##############################" -foregroundcolor "Yellow"
echo "
r”

Do {
$BDDOK = Read-Host ‘Base de données à installer ? (Répondre “y” ou “n”)’
$BDDOK = $BDDOK.ToLowerInvariant()
} While (($BDDOK -ne “y”) -and ($BDDOK -ne “n”))

If ($BDDOK -eq “y”) {
Do {
$version = Read-Host ‘2008 ou 2012 ? (Répondre “2008” ou “2012”)’
} While (($version -ne “2008”) -and ($version -ne “2012”))

Do {
$version2 = Read-Host ‘standard ou enterprise? (Répondre “s” ou “e”)’
$version2 = $version2.ToLowerInvariant()
} While (($version2 -ne “s”) -and ($version2 -ne “e”))
If ($version -eq “2008”){
Remove-Item -Recurse -Force “C:\Install-SQL\2012”
If ($version2 -eq “s”){
regedit.exe /s “C:\Install-SQL\2008\Standard\sql2008standard.reg”
}Else {
regedit.exe /s “C:\Install-SQL\2008\Enterprise\sql2008enterprise.reg”
}
}Else {
Remove-Item -Recurse -Force “C:\Install-SQL\2008”
If ($version2 -eq “s”){
regedit.exe /s “C:\Install-SQL\2012\Standard\sql2012standard.reg”
}Else {
regedit.exe /s “C:\Install-SQL\2012\Enterprise\sql2012enterprise.reg”
}
}
}Else{
Remove-Item -Recurse -Force “C:\Install-SQL”
}

 

template01

 

Selon les choix de l’utilisateur, une clé de registre est modifiée pour qu’au reboot le script d’installation de la base de données soit exécuté. Voici le contenu du .reg qui permet au prochain reboot d’exécuter le script InstallSQL2008.bat :

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
“SQL”=”C:\\Install-SQL\\2008\\Enterprise\\InstallSQL2008.bat”

 

Voici le script exécuté au boot :

 

Exécution du script permettant de récupérer les variables

powershell -command “& {Set-ExecutionPolicy Unrestricted}”
powershell -file “C:\Install-SQL\2008\scriptSQL.ps1”
powershell -command “& {Set-ExecutionPolicy Restricted}”
@ECHO off

Installation de la base de données via les sources avec en paramètre le fichier ini modifié

echo Installation de SQL Server 2008 R2 en cours … Ne pas fermer cette fenetre
“C:\Install-SQL\2008\Enterprise\SQL-2008-ENTERPRISE\setup.exe” /ConfigurationFile=”C:\Install-SQL\2008\ConfigurationFile2008v2.ini”

Installation des 3 services pack

echo Installation de SQL Server 2008 R2 SP1 en cours … Ne pas fermer cette fenetre
“C:\Install-SQL\2008\SP1\SQLServer2008R2SP1-KB2528583-x64-ENU.exe /allinstances /quiet”

echo Installation de SQL Server 2008 R2 SP2 en cours … Ne pas fermer cette fenetre
“C:\Install-SQL\2008\SP2\SQLServer2008R2SP2-KB2630458-x64-ENU.exe /allinstances /quiet”

echo Installation de SQL Server 2008 R2 SP3 en cours … Ne pas fermer cette fenetre
“C:\Install-SQL\2008\SP3\SQLServer2008R2SP3-KB2979597-x64-ENU.exe /allinstances /quiet”

echo Installation terminee. Merci de tester le bon fonctionnement de SQL Server

Suppression des scripts et sources d’installation

powershell -command “&{Remove-Item -Recurse -Force “C:\Install-SQL”}”

 

 template06

 

Ce script fait appel à un fichier powershell qui récupère le nom du serveur dans la variable serveur et qui demande à l’utilisateur le nom de l’instance et le mot de passe du compte sa :

 

Récupération des variables

$serveur = Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name
$instance = Read-Host “Nom de l’instance ?”
$mdpinstance = Read-Host “Mot de passe de l’instance ? (Code Appli + nom instance en minuscule)”

Modification des champs dans le fichier .ini

get-content “C:\Install-SQL\2008\ConfigurationFile2008.ini” | foreach-object {$_ -replace “NOMSERVEUR”, $serveur} | set-content “C:\Install-SQL\2008\tempconf.ini”
get-content “C:\Install-SQL\2008\tempconf.ini” | foreach-object {$_ -replace “NOMINSTANCE”, $instance} | set-content “C:\Install-SQL\2008\tempconf2.ini”
get-content “C:\Install-SQL\2008\tempconf2.ini” | foreach-object {$_ -replace “MDPINSTANCE”, $mdpinstance} | set-content “C:\Install-SQL\2008\ConfigurationFile2008v2.ini”

Suppression des fichiers temporaires

Remove-Item “C:\Install-SQL\2008\ConfigurationFile2008.ini”
Remove-Item “C:\Install-SQL\2008\tempconf.ini”
Remove-Item “C:\Install-SQL\2008\tempconf2.ini”

 

template02

 

Ce fichier PS1 va modifier dans le fichier .ini les champs NOMSERVEUR, NOMINSTANCE et MDPINSTANCE. Biensûr, vous pouvez rentrer ces valeurs en dur dans le fichier .ini avant de lancer votre script et retirer cette partie.

Vous pouvez également au lieu de copier les sources d’installation en local, spécifier dans votre script le lecteur CD et monter l’ISO sur la VM. Il y a plein de possibilités, a vous de trouver celle qui vous arrange le plus.

A la fin de l’installation, vérifiez que les services SQL sont bien démarrés et que votre instance nommée est bien configurée :

template07

Veuillez trouver ci-dessous le fichier de configuration .ini pour l’installation silencieuse de la base SQL 2008 R2 : (En rouge les champs modifié par le script) -> ConfigurationFile2008

 

;SQLSERVER2008 Configuration File
[SQLSERVER2008]

; Specify the Instance ID for the SQL Server features you have specified. SQL Server directory structure, registry structure, and service names will reflect the instance ID of the SQL Server instance.

INSTANCEID=”NOMINSTANCE

; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. This is a required parameter.

ACTION=”Install”

; Specifies features to install, uninstall, or upgrade. The list of top-level features include SQL, AS, RS, IS, and Tools. The SQL feature will install the database engine, replication, and full-text. The Tools feature will install Management Tools, Books online, Business Intelligence Development Studio, and other shared components.

FEATURES=SQLENGINE,REPLICATION,FULLTEXT,AS,BIDS,CONN,IS,BC,SDK,BOL,SSMS,ADV_SSMS,SNAC_SDK,OCS

; Displays the command line parameters usage

HELP=”False”

; Specifies that the detailed Setup log should be piped to the console.

INDICATEPROGRESS=”False”

; Setup will not display any user interface.

QUIET=”True”

; Setup will display progress only without any user interaction.

QUIETSIMPLE=”False”

; Specifies that Setup should install into WOW64. This command line argument is not supported on an IA64 or a 32-bit system.

X86=”False”

; Detailed help for command line argument ENU has not been defined yet.

ENU=”True”

; Specify if errors can be reported to Microsoft to improve future SQL Server releases. Specify 1 or True to enable and 0 or False to disable this feature.

ERRORREPORTING=”False”

; Specify the root installation directory for native shared components.

INSTALLSHAREDDIR=”D:\Microsoft SQL Server”

; Specify the root installation directory for the WOW64 shared components.

INSTALLSHAREDWOWDIR=”D:\Microsoft SQL Server (x86)”

; Specify the installation directory.

INSTANCEDIR=”F:\SQLDATA\NOMINSTANCE

; Specify that SQL Server feature usage data can be collected and sent to Microsoft. Specify 1 or True to enable and 0 or False to disable this feature.

SQMREPORTING=”False”

; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. This parameter is required when installing the SQL Server Database Engine (SQL), Analysis Services (AS), or Reporting Services (RS).

INSTANCENAME=”NOMINSTANCE

; Agent account name

AGTSVCACCOUNT=”NT AUTHORITY\SYSTEM”

; Auto-start service after installation.

AGTSVCSTARTUPTYPE=”Manual”

; Startup type for Integration Services.

ISSVCSTARTUPTYPE=”Automatic”

; Account for Integration Services: Domain\User or system account.

ISSVCACCOUNT=”NT AUTHORITY\NetworkService”

; The name of the account that the Analysis Services service runs under.

ASSVCACCOUNT=”NT AUTHORITY\SYSTEM”

; Controls the service startup type setting after the service has been created.

ASSVCSTARTUPTYPE=”Automatic”

; The collation to be used by Analysis Services.

ASCOLLATION=”Latin1_General_CI_AS”

; The location for the Analysis Services data files.

ASDATADIR=”F:\SQLDATA\NOMINSTANCE\MSAS10_50.NOMINSTANCE\OLAP\Data”

; The location for the Analysis Services log files.

ASLOGDIR=”F:\SQLDATA\NOMINSTANCE\MSAS10_50.NOMINSTANCE\OLAP\Log”

; The location for the Analysis Services backup files.

ASBACKUPDIR=”F:\SQLDATA\NOMINSTANCE\MSAS10_50.NOMINSTANCE\OLAP\Backup”

; The location for the Analysis Services temporary files.

ASTEMPDIR=”F:\SQLDATA\NOMINSTANCE\MSAS10_50.NOMINSTANCE\OLAP\Temp”

; The location for the Analysis Services configuration files.

ASCONFIGDIR=”F:\SQLDATA\NOMINSTANCE\MSAS10_50.NOMINSTANCE\OLAP\Config”

; Specifies whether or not the MSOLAP provider is allowed to run in process.

ASPROVIDERMSOLAP=”1″

; Specifies the list of administrator accounts that need to be provisioned.

ASSYSADMINACCOUNTS=”NOMSERVEUR\Administrator”

; A port number used to connect to the SharePoint Central Administration web application.

FARMADMINPORT=”0″

; Startup type for the SQL Server service.

SQLSVCSTARTUPTYPE=”Automatic”

; Level to enable FILESTREAM feature at (0, 1, 2 or 3).

FILESTREAMLEVEL=”0″

; Set to “1” to enable RANU for SQL Server Express.

ENABLERANU=”False”

; Specifies a Windows collation or an SQL collation to use for the Database Engine.

SQLCOLLATION=”SQL_Latin1_General_CP1_CI_AS”

; Account for SQL Server service: Domain\User or system account.

SQLSVCACCOUNT=”NT AUTHORITY\SYSTEM”

; Windows account(s) to provision as SQL Server system administrators.

SQLSYSADMINACCOUNTS=”NOMSERVEUR\Administrator”

; The default is Windows Authentication. Use “SQL” for Mixed Mode Authentication.

SECURITYMODE=”SQL”

; Provision current user as a Database Engine system administrator for SQL Server 2008 R2 Express.

ADDCURRENTUSERASSQLADMIN=”False”

; Specify 0 to disable or 1 to enable the TCP/IP protocol.

TCPENABLED=”1″

; Specify 0 to disable or 1 to enable the Named Pipes protocol.

NPENABLED=”0″

; Startup type for Browser Service.

BROWSERSVCSTARTUPTYPE=”Automatic”

; Specifies how the startup mode of the report server NT service. When
; Manual – Service startup is manual mode (default).
; Automatic – Service startup is automatic mode.
; Disabled – Service is disabled

RSSVCSTARTUPTYPE=”Automatic”

; Specifies which mode report server is installed in.
; Default value: “FilesOnly”

RSINSTALLMODE=”FilesOnlyMode”

SAPWD=MDPINSTANCE

; Add description of input argument FTSVCACCOUNT

FTSVCACCOUNT=”NT AUTHORITY\LOCAL SERVICE”

RSINSTALLMODE=”FilesOnlyMode”
IACCEPTSQLSERVERLICENSETERMS=”True”
QUIET=”True”

 

Veuillez trouver ci-dessous le fichier de configuration .ini pour l’installation silencieuse de la base SQL 2012 R2 : (En rouge les champs modifié par le script) -> ConfigurationFile2012

 

;SQL Server 2012 Configuration File
[OPTIONS]

; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. This is a required parameter.

ACTION=”Install”

; Detailed help for command line argument ENU has not been defined yet.

ENU=”True”

; Setup will not display any user interface.

QUIET=”True”

; Setup will display progress only without any user interaction.

QUIETSIMPLE=”False”

; Specify whether SQL Server Setup should discover and include product updates. The valid values are True and False or 1 and 0. By default SQL Server Setup will include updates that are found.

UpdateEnabled=”True”

; Specifies features to install, uninstall, or upgrade. The list of top-level features include SQL, AS, RS, IS, MDS, and Tools. The SQL feature will install the Database Engine, Replication, Full-Text, and Data Quality Services (DQS) server. The Tools feature will install Management Tools, Books online components, SQL Server Data Tools, and other shared components.

FEATURES=SQLENGINE,REPLICATION,FULLTEXT,AS,BIDS,CONN,IS,BC,SDK,BOL,SSMS,ADV_SSMS,DREPLAY_CTLR,DREPLAY_CLT,SNAC_SDK

; Specify the location where SQL Server Setup will obtain product updates. The valid values are “MU” to search Microsoft Update, a valid folder path, a relative path such as .\MyUpdates or a UNC share. By default SQL Server Setup will search Microsoft Update or a Windows Update service through the Window Server Update Services.

UpdateSource=”MU”

; Displays the command line parameters usage

HELP=”False”

; Specifies that the detailed Setup log should be piped to the console.

INDICATEPROGRESS=”False”

; Specifies that Setup should install into WOW64. This command line argument is not supported on an IA64 or a 32-bit system.

X86=”False”

; Specify the root installation directory for shared components. This directory remains unchanged after shared components are already installed.

INSTALLSHAREDDIR=”D:\Microsoft SQL Server”

; Specify the root installation directory for the WOW64 shared components. This directory remains unchanged after WOW64 shared components are already installed.

INSTALLSHAREDWOWDIR=”D:\Microsoft SQL Server (x86)”

; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. This parameter is required when installing the SQL Server Database Engine (SQL), Analysis Services (AS), or Reporting Services (RS).

INSTANCENAME=”NOMINSTANCE

; Specify the Instance ID for the SQL Server features you have specified. SQL Server directory structure, registry structure, and service names will incorporate the instance ID of the SQL Server instance.

INSTANCEID=”NOMINSTANCE

; Specify that SQL Server feature usage data can be collected and sent to Microsoft. Specify 1 or True to enable and 0 or False to disable this feature.

SQMREPORTING=”False”

; The Windows account(s) used to grant permission to the Distributed Replay Controller service.

CTLRUSERS=”NOMSERVEUR\Administrator”

; The account used by the Distributed Replay Controller service.

CTLRSVCACCOUNT=”NT Service\SQL Server Distributed Replay Controller”

; The startup type for the Distributed Replay Controller service.

CTLRSTARTUPTYPE=”Manual”

; The account used by the Distributed Replay Client service.

CLTSVCACCOUNT=”NT Service\SQL Server Distributed Replay Client”

; The startup type for the Distributed Replay Client service.

CLTSTARTUPTYPE=”Manual”

; Specify if errors can be reported to Microsoft to improve future SQL Server releases. Specify 1 or True to enable and 0 or False to disable this feature.

ERRORREPORTING=”False”

; Specify the installation directory.

INSTANCEDIR=”F:\SQLDATA\NOMINSTANCE

; Agent account name

AGTSVCACCOUNT=”NT Service\SQLAgent$NOMINSTANCE

; Auto-start service after installation.

AGTSVCSTARTUPTYPE=”Manual”

; Startup type for Integration Services.

ISSVCSTARTUPTYPE=”Automatic”

; Account for Integration Services: Domain\User or system account.

ISSVCACCOUNT=”NT Service\MsDtsServer110″

; The name of the account that the Analysis Services service runs under.

ASSVCACCOUNT=”NT Service\MSOLAP$NOMINSTANCE

; Controls the service startup type setting after the service has been created.

ASSVCSTARTUPTYPE=”Automatic”

; The collation to be used by Analysis Services.

ASCOLLATION=”Latin1_General_CI_AS”

; The location for the Analysis Services data files.

ASDATADIR=”F:\SQLDATA\NOMINSTANCE\MSAS11.NOMINSTANCE\OLAP\Data”

; The location for the Analysis Services log files.

ASLOGDIR=”F:\SQLDATA\NOMINSTANCE\MSAS11.NOMINSTANCE\OLAP\Log”

; The location for the Analysis Services backup files.

ASBACKUPDIR=”F:\SQLDATA\NOMINSTANCE\MSAS11.NOMINSTANCE\OLAP\Backup”

; The location for the Analysis Services temporary files.

ASTEMPDIR=”F:\SQLDATA\NOMINSTANCE\MSAS11.NOMINSTANCE\OLAP\Temp”

; The location for the Analysis Services configuration files.

ASCONFIGDIR=”F:\SQLDATA\NOMINSTANCE\MSAS11.NOMINSTANCE\OLAP\Config”

; Specifies whether or not the MSOLAP provider is allowed to run in process.

ASPROVIDERMSOLAP=”1″

; Specifies the list of administrator accounts that need to be provisioned.

ASSYSADMINACCOUNTS=”NOMSERVEUR\Administrator”

; Specifies the server mode of the Analysis Services instance. Valid values are MULTIDIMENSIONAL and TABULAR. The default value is MULTIDIMENSIONAL.

ASSERVERMODE=”MULTIDIMENSIONAL”

; CM brick TCP communication port

COMMFABRICPORT=”0″

; How matrix will use private networks

COMMFABRICNETWORKLEVEL=”0″

; How inter brick communication will be protected

COMMFABRICENCRYPTION=”0″

; TCP port used by the CM brick

MATRIXCMBRICKCOMMPORT=”0″

; Startup type for the SQL Server service.

SQLSVCSTARTUPTYPE=”Automatic”

; Level to enable FILESTREAM feature at (0, 1, 2 or 3).

FILESTREAMLEVEL=”0″

; Set to “1” to enable RANU for SQL Server Express.

ENABLERANU=”False”

; Specifies a Windows collation or an SQL collation to use for the Database Engine.

SQLCOLLATION=”SQL_Latin1_General_CP1_CI_AS”

; Account for SQL Server service: Domain\User or system account.

SQLSVCACCOUNT=”NT Service\MSSQL$NOMINSTANCE

; Windows account(s) to provision as SQL Server system administrators.

SQLSYSADMINACCOUNTS=”NOMSERVEUR\Administrator”

; The default is Windows Authentication. Use “SQL” for Mixed Mode Authentication.

SECURITYMODE=”SQL”

; Provision current user as a Database Engine system administrator for SQL Server 2012 Express.

ADDCURRENTUSERASSQLADMIN=”False”

; Specify 0 to disable or 1 to enable the TCP/IP protocol.

TCPENABLED=”1″

; Specify 0 to disable or 1 to enable the Named Pipes protocol.

NPENABLED=”0″

; Startup type for Browser Service.

BROWSERSVCSTARTUPTYPE=”Automatic”

RSINSTALLMODE=”FilesOnlyMode”

SAPWD=MDPINSTANCE

; Add description of input argument FTSVCACCOUNT

FTSVCACCOUNT=”NT Service\MSSQLFDLauncher$NOMINSTANCE

IACCEPTSQLSERVERLICENSETERMS=”True”
QUIET=”True”

 

Share

Automatiser le déploiement et la configuration VM Windows IP / DNS / KMS / Domaine / SQL

 

 

Afin de lancer une installation automatique de vos VMs Windows, vous pouvez utiliser les templates et les guest customization proposés par VMware. Cependant, les guest customization ne permettent pas toujours de configurer les VMs de manière fine.

Si vous souhaitez par exemple, renseignez une IP fixe dans différents vlans sans créer un template par vlan, l’enregistrer dans un domaine, l’activer via KMS voir installer une base SQL, vous pouvez utiliser des scripts que vous exécutez au premier boot après le sysprep.

Dans notre cas, nos scripts vont permettent de spécifier l’ip, le masque, la gateway, les DNS de la VM mais également d’enregistrer le serveur auprès d’un serveur KMS, d’ajouter le serveur à un domaine et d’éventuellement installer une base de données.

Nous avons utiliser un template et une guest customization. La guest customization nous permet d’exécuter 3 scripts après l’application du sysprep. Ces scripts sont présents dans le template : 

 

template03

 

Le premier script .bat est le suivant :

 

powershell -command “& {Set-ExecutionPolicy Unrestricted}”
powershell -file “C:\Premier-Boot\Configuration.ps1”
powershell -command “& {Set-ExecutionPolicy Restricted}”

 

Il permet d’exécuter un script PowerShell “Configuration.ps1 qui se trouve sur le template.

Nous allons décomposer le script Configuration.ps1 en plusieurs partie mais c’est en fait un seul et même fichier.

Le script PowerShell va dans un premier temps demander à l’utilisateur de renseigner l’ip, le masque et la gateway et demander si le serveur est en DMZ et sur quel site (primaire ou secondaire). En fonction des réponses les DNS sont configurés. Cette partie permet d’effectuer la configuration réseau de la VM :

echo “r"
Write-host "######################### CONFIGURATION RESEAU ##############################" -foregroundcolor "Magenta"
echo "
r”

function Set-ServerIpConfiguration {
param(
[string]$ip,
[string]$mask,
[string]$defaultGateway,
[string]$interfaceAlias,
[string[]]$dnsServers
)
$nicIndex = (Get-WMIObject Win32_NetworkAdapter | where {$_.netconnectionid -eq $interfaceAlias}).InterfaceIndex
$nic = Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.InterfaceIndex -eq $nicIndex}
$nic.EnableStatic($ip, $mask)
$nic.SetGateways($defaultGateway)
$nic.SetDNSServerSearchOrder($dnsServers)
}

Do{
$serverIp = Read-Host ‘Adresse IP ?’
$serverMask = Read-Host ‘Masque ?’
$serverDefaultGateway = Read-Host ‘Gateway ?’
$ConfReseau = Read-Host ‘La configuration réseau est elle correcte ? (Répondre “y” ou “n”)’
$ConfReseau = $ConfReseau.ToLowerInvariant()
} While ($ConfReseau -ne “y”)

Do{
$serverDMZ = Read-Host ‘Serveur en DMZ ? (Répondre “y” ou “n”)’
$serverDMZ = $serverDMZ.ToLowerInvariant()
} While (($serverDMZ -ne “n”) -and ($serverDMZ -ne “y”))

$serverDNSPR = “2.x.x.250″,”1.x.x.250”
$serverDNSSE = “1.x.x.250″,”2.x.x.250”
$serverDNSDMZ = “192.x.x.250″,”192.x.x.251”
$serverInterfaceAlias = “Ethernet”

If ($serverDMZ -eq “y”){
Set-ServerIpConfiguration -ip $serverIp -mask $serverMask -defaultGateway $serverDefaultGateway -interfaceAlias $serverInterfaceAlias -dnsServers $serverDNSDMZ
}
Else{
Do {
$serverDnsServers = Read-Host ‘VM déployée sur Primaire ou Secondaire ? (Répondre “p” ou “s”)’
$serverDnsServers = $serverDnsServers.ToLowerInvariant()
} while (($serverDnsServers -ne “p”) -and ($serverDnsServers -ne “s”))

If ($serverDnsServers -eq “p”){
Set-ServerIpConfiguration -ip $serverIp -mask $serverMask -defaultGateway $serverDefaultGateway -interfaceAlias $serverInterfaceAlias -dnsServers $serverDNSPR
}Else{
Set-ServerIpConfiguration -ip $serverIp -mask $serverMask -defaultGateway $serverDefaultGateway -interfaceAlias $serverInterfaceAlias -dnsServers $serverDNSSE
}
}

 

template04

 

La suite du script permet d’enregistrer la VM via un serveur KMS puis de l’ajouter à un domaine. Selon si l’utilisateur à indiquer que le serveur est en DMZ ou pas, le serveur KMS sera différent. Si le serveur est en DMZ, il n’y aura pas d’ajout dans un domaine :

 

Start-Sleep -s 5
echo “r"
Write-host "########################## ENREGISTREMENT KMS ###############################" -foregroundcolor "Red"
echo "
r”
Write-host “L’enregistrement KMS est en cours” -foregroundcolor “Yellow”
If ($serverDMZ -eq “y”){
C:\Windows\System32\slmgr.vbs /skms 192.x.x.100
}Else{
C:\Windows\System32\slmgr.vbs /skms 1.x.x.15
}
Start-Sleep -s 5
C:\Windows\System32\slmgr.vbs /ato
Start-Sleep -s 5
echo “r"
Write-host "######################### REJOINDRE LE DOMAINE ##############################" -foregroundcolor "Cyan"
echo "
r”

If ($serverDMZ -eq “n”){
Do {
$domainOK = Read-Host ‘Serveur à joindre au domaine Ressources ? (Répondre “y” ou “n”)’
$domainOK = $domainOK.ToLowerInvariant()
} while (($domainOK -ne “y”) -and ($domainOK -ne “n”))
If ($domainOK -eq “y”){
$username = “domain\adminxx”
Write-Host “Compte d’ajout dans le domaine : $username”
$password = Read-Host ‘Renseignez le mot de passe du compte ?’ -assecurestring
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
Start-Sleep -s 2
Add-Computer -DomainName “fqdndomain” -Credential $credential -OUPath “OU=Organisation,OU=Serveurs,DC=domain,DC=labo”
Start-Sleep -s 5
}
}

 

template05

 

Le mot de passe du compte admin du domaine est demandé à l’utilisateur. 
L’étape suivante concerne l’installation d’une base de données ou non. Le script demande si une base de données est à installer et si oui de quelle version. Selon la réponse de l’utilisateur, un fichier .reg est exécuté afin de lancer un script d’installation de la base au prochain reboot : 

 

echo “r"
Write-host "######################### INSTALLER BASE DE DONNEES ##############################" -foregroundcolor "Yellow"
echo "
r”

Do {
$BDDOK = Read-Host ‘Base de données à installer ? (Répondre “y” ou “n”)’
$BDDOK = $BDDOK.ToLowerInvariant()
} While (($BDDOK -ne “y”) -and ($BDDOK -ne “n”))

If ($BDDOK -eq “y”) {
Do {
$version = Read-Host ‘2008 ou 2012 ? (Répondre “2008” ou “2012”)’
} While (($version -ne “2008”) -and ($version -ne “2012”))

Do {
$version2 = Read-Host ‘standard ou enterprise? (Répondre “s” ou “e”)’
} While (($version2 -ne “s”) -and ($version2 -ne “e”))

If ($version -eq “2008”){
Remove-Item -Recurse -Force “C:\Install-SQL\2012”
If ($version2 -eq “s”){
regedit.exe /s “C:\Install-SQL\2008\Standard\sql2008standard.reg”
}Else {
regedit.exe /s “C:\Install-SQL\2008\Enterprise\sql2008enterprise.reg”
}
}Else {
Remove-Item -Recurse -Force “C:\Install-SQL\2008”
If ($version2 -eq “s”){
regedit.exe /s “C:\Install-SQL\2012\Standard\sql2012standard.reg”
}Else {
regedit.exe /s “C:\Install-SQL\2012\Enterprise\sql2012enterprise.reg”
}
}
}Else{
Remove-Item -Recurse -Force “C:\Install-SQL”
}

 

template01

 

Pour la suite de l’installation de la base de données voir l’article ici.

Une fois l’exécution du fichier Configuration.ps1 terminé, les deux scripts exécutés dans la guest customization sont les suivants :

 

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command “Remove-Item -Recurse -Force C:\Premier-Boot

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command “Restart-Computer

 

Le premier permet de nettoyer le template des différentes scritps de configuration et le dernier permet de rebooter le serveur après la mise dans le domaine et afin de lancer l’éventuelle installation de la base de données au prochain boot.

 

 

 

Share