Gestion centralisée des informations : Différence entre versions
(→La BD) |
(→La plateforme phpPgAdmin) |
||
Ligne 130 : | Ligne 130 : | ||
##Utilisateur: invposte | ##Utilisateur: invposte | ||
##Mot de passe: invposte | ##Mot de passe: invposte | ||
− | # | + | #Sélectionner la BD invposte et agrandir |
+ | #Sélectionner 'Tables' sous 'Schémas->public' |
Version du 26 juin 2018 à 17:49
L’objectif pour centraliser les données est de convenir avec l’utilisation d’une base de données suffisamment performante pour répondre aux besoins futurs. Selon la topologie du réseau et la structure des appareils, les données peuvent être à la fois mise en cache sur les appareils et par la suite, soit être traité localement puis transféré; ou simplement transférer le lot des données brutes, afin qu'elle soit traité par la suite.
- Le concept d'une CMDB
NOTE: L'élaboration des essais ont été effectués à la RAMQ
- Le choix s'impose davantage sur la conservation locale, si la cache est chiffrée et invisible à l'utilisateur.
- Les données sensibles soit traités en priorité
- Le traitement locale diminue la charge de travail du serveur et devient un bon compromis entre la relation client et serveur
- Les données brutes demeurent consultable au besoin du serveur et les rapatrient lorsque nécessaires
Sommaire
Les Pré-requis
- Infrastructure de serveurs assurant la redondance et la haute disponibilité
- Base de données: PostgreSQL --> Ouvert et Puissant
- Structure Web: NGINX, Apache, NodeJS, IIS
- Connaissance des langages Scripts orientés aux OS: Shell (BSH/KSH), DOS, VBScript, PowerShell
Le prototype
Dans le cadre du projet Windows 10 à la Régie de l'Assurance Maladie du Québec (RAMQ), l'absence d'une CMDB, un cycle de mise à jour en continue, impose la mise en place d'un outil centralisé pour recueillir les informations des postes de travail, l'état, les logiciels, les applications Maisons/Missions, les intervenants et responsables. La solution la plus adaptée consiste à centraliser ces informations au sein d'une base de données, afin qu'elle soit traitée par la suite par des requêtes adaptées aux besoins.
L'environnement
Les produits Microsoft sont majoritaires au sein du gouvernement québécois, ainsi il est préconisé d'utiliser les outils offerts par le fournisseur, lorsqu'ils sont accessibles. Dans le cadre de l'environnement présent, les accès sont très limités. Les points bloquant sont:
- Les utilisateurs ne peuvent installer de logiciels.
- Les utilisateurs ne peuvent ainsi créer de services ou ouverture de ports
- Les demandes entre différents services peuvent prendre un temps important voir décourageant
- Facteur de démotivation vis-à-vis l'innovation
- Les produits Microsoft ne sont pas toujours adaptés pour répondre au besoin
- Ils peuvent être moins performant dans certaines situations
La BD
Mon choix s'est orienté vers des applications portables et légères: PostgreSQL sur Windows 10
Attention:Choisir la version de la BD en fonction des outils qui la supporte. Exemple prendre une version 9.6 ou +, au lieu de la 10, car phpPgAdmin ne supporte que 9.6
- Extraire le fichier dans C:\RAMQ\PostgreSQL
- Télécharger les drivers ODBC 32bit et 64bit de PostgreSQL adaptés à la version BD téléchargée, accéder au source de PostgreSQL
- Installer ces Drivers ODBC !Attention, des droits Admins sont nécessaires!
- Démarrer la BD en exécutant PostgreSQLPortable.exe
- Dans l'invite de commande, créer une table au nom de invposte
- postgres=# CREATE DATABASE invposte;
- Si ok = CREATE DATABASE
- Ensuite créer un utilisateur invposte avec le mot de passe invposte
- postgres=# CREATE USER invposte WITH password 'invposte';
- Si ok = CREATE ROLE
- Affecter les pleins droits du compte invposte sur la BD invposte:
- postgres=# GRANT ALL privileges ON DATABASE invposte TO invposte;
- Si ok = GRANT
- Valider votre installation en listant les BD existante avec \l
- postgres-# \l
Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès |
---|---|---|---|---|---|
invposte | postgres | UTF8 | C | C | =Tc/postgres + postgres=CTc/postgres + invposte=CTc/postgres |
postgres | postgres | UTF8 | C | C | |
template0 | postgres | UTF8 | C | C | =c/postgres + postgres=CTc/postgres |
template1 | postgres | UTF8 | C | C | =c/postgres + postgres=CTc/postgres |
Tester la connexion ODBC
- Lancer l'Administrateur de données ODBC (64bit)
- {Win + R} et taper: odbcad32.exe
- Sous l'onglet 'Source de données utilisateur, cliquer Ajouter
- Sélectionner PostgreSQL UNICODE (x64)
- Entrer les informations suivantes:
- Data Source: Test SQL
- Database: invposte
- Server: localhost
- User Name: invposte
- Port: 5432
- Password: invposte
- Cliquer sur Test
- Une fenêtre apparaît et indique Connection Successful
- Cliquer sur Save
La BD est désormais accessible en localhost, si on veut qu'elle soit ouverte pour l'extérieur, s'assurer d'ouvrir le port 5432 du Firewall Windows
Structure Web
Dans la même lancée que la base de donnée portable, mon choix s'est arrêté sur WNMP - la solution portable de Windows/Nginx/MySQL/PHP serveur. Nginx comme une plateforme Web nouvelle, solide et prometteuse. PHP comme langage simple , commun et connu par le grand publique.La portion MySQL est inutile ici puisqu'on utilise PostgreSQL.
- Télécharger WNMP
- Décompresser WNMP dans le répertoire C:\RAMQ\WNMP
- Maintenant, les composants principaux {Nginx|PHP|Memcache} doivent être télécharger et les fichiers binaires doivent être déposés dans leur répertoire respectif sous WNMP !Prendre les dernières versions
- PHP prendre la version zip et décompresser les binaires dans le répertoire PHP (C:\RAMQ\WNMP\PHP)
- Memcached-32bit et décompresser les binaires dans le répertoire memcached (C:\RAMQ\WNMP\memcached)
- Nginx et décompresser les binaires dans le répertoire Nginx (C:\RAMQ\WNMP\Nginx)
- Ajouter l'outil d'administration Web pour PostgreSQL: phpPgAdmin
- phpPgAdmin et décompresser les binaires dans le répertoire phpPgAdmin sous nginx\html (C:\RAMQ\WNMP\nginx\html\phpPgAdmin)
- Maintenant il faut paramétrer les fichiers configs
- Nginx: sous le répertoire C:\RAMQ\WNMP\nginx\conf, éditer le fichier nginx.conf
- Ouvrir les ports 80 et 9000 du FireWall Windows sur le poste
- PHP: Éditer le fichier php.ini sous C:\RAMQ\WNMP\PHP\ et s'assurer d'avoir toutes les extensions nécessaires
- phpPgAdmin: Éditer le fichier config.inc.php sous C:\RAMQ\WNMP\nginx\html\phpPgAdmin\conf
- Les valeurs suivantes doivent être présente:
- $conf['servers'][0]['desc'] = 'PostgreSQL';
- $conf['servers'][0]['host'] = 'localhost';
- $conf['servers'][0]['port'] = 5432;
- $conf['servers'][0]['pg_dump_path'] = 'C:\\RAMQ\\PostgreSQLPortable\\App\\PgSQL\\bin\\pg_dump.exe';
- $conf['servers'][0]['pg_dumpall_path'] = 'C:\\RAMQ\\PostgreSQLPortable\\App\\PgSQL\\bin\\pg_dumpall.exe';
- $conf['servers'][0]['sslmode'] = 'allow';
- Les valeurs suivantes doivent être présente:
- Scripts de lancement: Éditer Start_server.bat
- Commenter la partie MySQL --> ajouter REM devant les 2 lignes pour obtenir REM :: Start MySQL using the mysql\my.ini config file | REM start mysql\bin\mysqld
- Ajouter Start C:\RAMQ\PostgreSQL\PostgreSQLPortable.exe
- Reformuler le Nginx afin qu'il ressemble à ceci:
- cd nginx
- start nginx
- cd ..
- Fermer et Sauvegarder
- Script d'arrêt: Éditer Stop_server.bat
- Commenter la partie MySQL en ajoutant REM devant la ligne
- NOTE: Pour l'arrêt de PostgreSQL portable, il faut exécuter manuellement dans la fenêtre de commande Windows. TAPER: \q
- Nginx: sous le répertoire C:\RAMQ\WNMP\nginx\conf, éditer le fichier nginx.conf
La configuration
Notre infrastructure est prête à recevoir du contenu, c.-à-d. que la coquille est vide pour le moment.
- Avant tout, créer un schéma permettant d'établir un plan d'ensemble des relations entre les différentes tables et fournir une projection des besoins
Nous alimenterons notre BD grâce aux différents scripts suivants qui vont, à la fois, créer la table si elle n'existe pas et injecter les données nécessaires.
- UIDexportSQL.ps1 : Le script qui alimente la partie utilisateur en scannant l'Active Directory de l'entreprise
- SCCMexportSQL.ps1 : Le script qui alimente la partie ordinateur en scannant l'export des données de la plateforme SCCM
- HPSMexportSQL.ps1 : Le script qui alimente la partie statique de l'inventaire ordinateur en scannant l'export des données de la plateforme HPSM
- GrpPrdAPPexportSQL.ps1 : Le script qui alimente la partie Applicative (maison) des utilisateurs en scannant les groupes d'appartenance de l'Active Directory de l'entreprise RAMQ
- GrpPrdLOGexportSQL.ps1 : Le script qui alimente la partie Logiciel des utilisateurs en scannant les groupes d'appartenance de l'Active Directory de l'entreprise RAMQ
- Lancer ces scripts l'un après l'autre avec PowerShell. Assurez-vous d'exécuter les scripts avec les droits d'Admin
- Vérifier les tables dans l'invite de commande de PostreSQL Portable:
- Taper: \c invposte
- Taper: \dt
- La liste devrait apparaître comme suit:
Liste des relations Schéma | Nom | Type | Propriétaire --------+-------+-------+-------------- public | ADUID | table | invposte public | SCCM | table | invposte
La plateforme phpPgAdmin
La BD est désormais alimentée, maintenant nous allons utiliser phpPgAdmin pour la consulter simplement:
- Dans un fureteur, taper: http://localhost/phpPgAdmin/
- Sélectionner PostgreSQL à gauche et taper le login
- Utilisateur: invposte
- Mot de passe: invposte
- Sélectionner la BD invposte et agrandir
- Sélectionner 'Tables' sous 'Schémas->public'