Table of Contents

Transfert de racktables sur un nouveau serveur

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 :

Afin de transférer l'application sur un nouveau serveur il faut donc récupérer les éléments constitutifs.

Récupération de la Base de données

Sur le serveur d'origine, Repérer le dossier hébergeant les bases de données

sudo grep -R --color datadir /etc/mysql

/etc/mysql/mysql.conf.d/mysqld.cnf:datadir		= /var/lib/mysql

Dans l'invite de commande mysql, récupérer le nom d'utilisateur le l'administrateur de base

SELECT user FROM mysql.user;
+------------------+
| user             |
+------------------+
| debian-sys-maint |
| mysql.session    |
| mysql.sys        |
| racktables_user  |
| root             |
+------------------+
5 rows in set (0,04 sec)

Faire un backup de la base de données:

sudo mysqldump racktables_db > backup-file.sql

Transférer la base de données vers le nouveau serveur:

sudo rsync -ave ssh backup-file.sql user@xx.xx.xxx.xx:/

Sur le nouveau serveur, installer le serveur mysql:

dnf install mysql-server

Démarrer les service:

systemctl start mysqld
systemctl enable mysqld

Créer et restaurer la base de données:

mysql -e "CREATE DATABASE IF NOT EXISTS racktables_db
mysql racktables_db < /backup-file.sql

Dans l'invite de commande mysql créer le compte admin de la base de données:

CREATE USER 'racktables_user' IDENTIFIED BY 'password';
GRANT ALL privileges ON `racktables_db`.* TO 'racktables_user'@'%';

Modifier le mot de passe de l'administrateur de base de données:

SELECT * FROM UserAccount;
+---------+-----------+------------------------------------------+--------------------------+
| user_id | user_name | user_password_hash                       | user_realname            |
+---------+-----------+------------------------------------------+--------------------------+
|       1 | admin     | 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 | RackTables Administrator |
+---------+-----------+------------------------------------------+--------------------------+

UPDATE UserAccount SET user_name = 'admin', user_password_hash = SHA1('password') where user_id = 1;

Récupération de racktables

Installer les prérequis de l'application

dnf install php-fpm php-snmp php-pcntl php-pdo php-gd php-mbstring php-json php-bcmath php-pdo_mysql -y

Démarrer et activer le service php-fpm:

systemctl start php-fpm
systemctl enable php-fpm

Depuis l'ancien serveur transférer le dossier racktables:

sudo rsync -ave ssh /home/jacques.nougat/www/html/racktables user@xx.xx.xxx.xx:/var/www/

Il faut s'assurer que le fichier secret.php est bien dans le dossier ou il est attendu:

sudo rsync -ave ssh www/html/racktables/inc/secret.php user@:/var/www/racktables/wwwroot/inc/secret.php
chmod 777 /var/www/racktables/wwwroot/inc/secret.php

Préparer la configuration de NGINX:

server {
        listen 88 default_server;
        server_name _;

        root /var/www/racktables/wwwroot;

        location / {
            index index.php;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php-fpm/www.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }
     }

Pour mettre à l'écoute NGINX sur le socket PHP-FPM, il faut repérer le socket unix utilisé:

grep '^listen' /etc/php-fpm.d/www.conf 
listen = /run/php-fpm/www.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

Puis modifier la ligne correspondante: fastcgi_pass unix:/var/run/php-fpm/www.sock;

Pour que SELinux accorde à NGINX l'accès au socket TCP sur lequel PHP-FPM écoute, il faut utiliser audit2allow pour créer un module de stratégie personnalisé à partir des sorties php-fpm et nginx de SELinux audit.log:

grep php-fpm /var/log/audit/audit.log | audit2allow -M phpfpmlocal
semodule -i phpfpmlocal.pp
grep nginx /var/log/audit/audit.log | audit2allow -M nginx
semodule -i nginx.pp

Ouvrir le port dans le pare-feux:

firewall-cmd --permanent --zone=public --add-port=88/tcp

Redémarrer le service nginx:

systemctl nginx restart