# Racktables
{{INLINETOC}}
**Racktables** est un outil conçu pour gérer les actifs des plate-formes. **RackTables** permet de gérer les ressources matérielles des documents, les adresses réseau, l'espace dans les racks, la configuration des réseaux et bien plus encore. **RackTables** nécessite :
* Un serveur Web – Apache ou Nginx
* PHP-FPM pour le front-end
* Serveur de base de données MySQL/MariaDB pour les données back-end.
## Installation de racktables
L'installation des paquets mysql-server **php-mysql** **php-curl** **php-ldap** ainsi que de l'extension **pcntl** sont requis.
```
apt-get install nginx libapache2-mod-php7.4 php7.4-gd php7.4-mysql php7.4-mbstring php7.4-bcmath php7.4-json php7.4-snmp
```
Créer un utilisateur et une base de donnée racktables dans mysql:
```
sudo mysql -u root -p
CREATE DATABASE racktables_db CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER racktables_user@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON racktables_db.* TO racktables_user@localhost;
quit
```
Décompresser l'archive tar.gz/zip dans le répertoire root du serveur (par exemple /var/www/html) et configurer le serveur pour utiliser le sous-répertoire wwwroot comme nouveau DocumentRoot. Alternativement, des liens symboliques vers wwwroot ou même vers index.php à partir d'un DocumentRoot existant sont également possibles et souvent conseillés.
https://github.com/RackTables/racktables-contribs.git
Ouvrir l'URL RackTables configurée pour configurer et initialiser l'application.
On peut relancer le script d'installation en indiquant `?module=install`:\\ `http://127.0.0.1:8080/racktables/?module=install`
^ Distribution ^ Apache httpd UID:GID ^ MySQL/MariaDB UNIX socket path ^
| Fedora | apache:apache | /var/lib/mysql/mysql.sock |
| openSUSE | wwwrun:www | /var/run/mysql/mysql.sock |
| Ubuntu | www-data:www-data | /var/run/mysqld/mysqld.sock |
Définir les autorisations secret.php à l'invite:\\ \\ `chown www-data:www-data /usr/local/www/racktables/wwwroot/inc/secret.php`\\ `chmod 400 /usr/local/www/racktables/wwwroot/inc/secret.php`
## Mise à niveau de RackTables
Sauvegarder la base de données avant de commencer la mise à niveau.
```
mysqldump --routines -u racktables_user -p racktables_db > dbexport.sql
```
Supprimer tous les fichiers existants sauf la configuration (le fichier inc/secret.php) et les plugins locaux (dans le répertoire plugins/).
Mettre le contenu de la nouvelle archive tar.gz/zip à l'endroit.
Ouvrir la page RackTables dans un navigateur. Le logiciel détectera l'incompatibilité de version et affichera un message indiquant de se connecter en tant qu'administrateur pour terminer la mise à niveau.
mysql -u root racktables_db < dbexport.sql
## Plugins
### Architecture des plugins
* **Nouvelle architecture**: Chaque plugin doit résider dans son propre répertoire et contenir un fichier nommé plugin.php hébergeant certaines fonctions obligatoires.
* **Ancienne architecture**: Les modules complémentaires sont placés directement dans le dossier plugins. Les fichiers doivent être nommés avec l'extension .php pour être chargés automatiquement. Les fichiers sont chargés par ordre alphabétique.
### Référentiel racktables-contribs
Le référentiel racktables-contribs fourni des plugins offrant la possibilité d'ajouter des fonctionnalités à RackTables.
```
git clone https://github.com/RackTables/racktables-contribs.git
```
### Plugin cablinplan
Il s'agit d'une extension RackTables pour afficher un plan de câblage schématique de tous objets dans le système.
Installer les prérequis
```
sudo apt install graphviz
```
Copier le fichier PHP dans le répertoire des plugins
```
sudo cp cablinplan.php /var/www/racktables/plugins/
sudo chmod 644 /var/www/racktables/plugins/cablinplan.php
```
Copier le fichier PNG dans le répertoire "pix" de l'instance RackTables
```
sudo cp cablinplan.png /var/www/racktables/pix/
sudo chmod 644 /var/www/racktables/pix/cablinplan.png
```
### Plugin graphTopo
Installer les prérequis
```
sudo apt install graphviz python3-pip python3-mysqldb libgraphviz-dev
```
Ce plugin utilise la classe **Image\_GraphViz** pour la création des graphes et leur visualisation avec les outils GraphViz:\\ \\ `wget http://pear.php.net/go-pear.phar`\\ `php go-pear.phar`\\ `pear install Image_GraphViz`
Installer les pérequis dans requirements.txt:
```
cd racktables-contribs-master/python-graph-topology/
sudo pip3 install -r requirements.txt
```
Compiler le code python
```
python3 -m nuitka topoGen.py --nofollow-import-to=MySQLdb --nofollow-import-to=graphviz --nofollow-import-to=pydot --nofollow-import-to=time --nofollow-import-to =sys --nofollow-import-to=functools --nofollow-import-to=datetime --nofollow-import-to=pandas --nofollow-import-to=networkx --nofollow-import-to=opérateur --nofollow -import-to=itertools --nofollow-import-to=re --nofollow-import-to=matplotlib --nofollow-import-to=pyvis --follow-imports
```
Copier des fichiers (cela inclut le binaire généré à la deuxième étape):
```
sudo cp graph.php /var/www/racktables/plugins/
sudo cp topoGen.bin /var/www/racktables/plugins/
sudo cp settings.yml /var/www/racktables/plugins/
sudo cp logo.png /var/www/racktables/wwwroot/pix/
sudo cp not.gif /var/www/racktables/wwwroot/pix/
sudo cp js/ /var/www/racktables/plugins/ -r
sudo cp css/ /var/www/racktables/plugins/ -r
```
Créer le lien nécessaire pour que le fichier graph.php puisse accéder à topoGen.bin.
```
cd /var/www/racktables/wwwroot/
sudo sudo ln ../plugins/ . -s
```
Définir les autorisations nécessaires pour le stockage des topologies
```
cd /var/www/racktables/wwwroot/
sudo chown www-data:www-data pix/ -R
sudo chown www-data:www-data plugins/
```
Définir un utilisateur SQL en lecture seule:
```
create user 'viewRT'@'%' identified by 'viewRT';
grant select,lock tables,show view on racktables.* to 'viewRT'@'%';
```