# 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'@'%'; ```