Projet SDIS29 - 2025 - Groupe 3
Lastest Update Version v0.0.5c-rr : le 14/11/24 à 10h40 par Rotsy Rahaingo
Oldest Update Version v0.0.5b-rr : le 14/11/24 à 09h35 par Rotsy Rahaingo
Oldest Update Version v0.0.4c-jp : le 08/11/2024 à 11h10 par Jarod PAUCHET
Oldest Update Version v0.0.4a-rr : le 08/11/2024 à 10h30 par Rotsy Rahaingo
Oldest Update Version v0.0.3d-jp : le 08/11/2024 à 09h00 par Jarod PAUCHET
Oldest Update Version v0.0.3c-jp : le 07/11/2024 à 18h00 par Rotsy Rahaingo
Oldest Update Version v0.0.2a-jp : le 07/11/2024 à 15h40 par Jarod PAUCHET
Oldest Update Version v0.0.1h-jp : le 07/11/2024 à 14h40 par Jarod PAUCHET
Oldest Update Version v0.0.1e-jp : le 07/11/2024 à 11h45 par Jarod PAUCHET
Oldest Update Version v0.0.1c-jp : le 07/11/2024 à 11h30 par Jarod PAUCHET
Oldest Update Version v0.0.1a-jp : le 07/11/2024 à 10h45 par Jarod PAUCHET
Etape 1 - Installation des machines virtuelles KVM :
Paramètres communs
- Memoire : 1 Go
- Disque : 10 Go
Clonage intégral de la machine Debian-12.7-template --> Nommage de trois machine,
- ap33-prod (id = 2620), IP : 172.16.0.120/24 ; gateway : 172.16.0.254
- ap33-test (id = 2621), IP : 172.16.0.121/24 ; gateway : 172.16.0.254
- ap33-mon (id = 2622), IP : 172.16.0.122/24 ; gateway : 172.16.0.254
Implémentation des clés SSH publique avec cloud-int :
Effectuer les commandes suivantes afin de copier votre clé :
- ssh-keygen
- cat .ssh/id_rsa.pub
Copier la clé dans cloud-init, onglet Clef SSH Publique, en cas de clé supplémentaire, les mettres à la ligne
Régénérer l'image avant de lancer la machine puis accèder aux machines par SSH avec la commande suivante : ssh debian@ap33-xxxx
Etape 2 : Configuration de base des machines
Sur les trois machines faire les commandes suivantes :
sudo su -
cd /etc/apt
wget depl/sio/api/apt.conf
timedatectl set-timezone Europe/Paris # Mise à jour de la date
apt update && apt upgrade # Mise à jour de la machine
apt install qemu-guest-agent
Etape 3 : Configuration des services des machines
Serveur ap33-prod
ap33-prod servira comme base de données MariaDB. Ce serveur sera également utilisé pour le développement et le déploiement d'applications via Tomcat10.
sudo su -
apt install tomcat10 mariadb-server # Installation des paquets
export http_proxy="http://10.121.38.1:8080/" # Exportation des ports
export https_proxy="http://10.121.38.1:8080/" # Exportation des ports
curl -L https://github.com/goss-org/goss/releases/latest/download/goss-linux-amd64 -o /usr/local/bin/goss # Installation de la dernière version de Goss vers /usr/local/bin/goss
chmod +rx /usr/local/bin/goss # Donner les droits de lecture et d'execution sur le dossier Goss
goss autoadd mariadb-server
goss autoadd tomcat10
goss add service mysql
goss add interface eth0
goss add http http://ap33-prod:8080
Serveur ap33-test
ap33-test servira comme base de données MariaDB et hébergera l'application web de gestion de bases de données PhpMyAdmin. Ce serveur sera également utilisé pour le développement et le déploiement d'applications via Tomcat10.
sudo su -
apt install tomcat10 mariadb-server phpmyadmin # Installation des paquets
export http_proxy="http://10.121.38.1:8080/" # Exportation des ports
export https_proxy="http://10.121.38.1:8080/" # Exportation des ports
curl -L https://github.com/goss-org/goss/releases/latest/download/goss-linux-amd64 -o /usr/local/bin/goss # Installation de la dernière version de Goss vers /usr/local/bin/goss
chmod +rx /usr/local/bin/goss # Donner les droits de lecture et d'execution sur le dossier Goss
goss autoadd mariadb-server
goss autoadd tomcat10
goss autoadd phpmyadmin
goss add service mysql
goss add interface eth0
goss add http http://ap33-test:8080
Afin d'importer la base de données, il suffit d'effectuer les commandes suivantes :
Important : Une copie du .sql vers le serveur ap33-test est nécessaire avant l'utilisation des commandes ci-dessous !
mysql -u root -p
create user admin@localhost identified by 'password123*';
GRANT ALL PRIVILEGES ON sdis29.* TO 'admin'@'localhost';
flush privileges;
source /home/debian/sdis29.sql
exit;
Etape 4 : Supervision des serveurs ap33-prod et ap33-test
Serveur ap33-mon
Voici le script d'installation de zabbix (à exécuter une seule fois)
timedatectl set-timezone Europe/Paris
apt-get update
apt-get install -y wget curl vim
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabb> # recuperer le fichier d'installation de zabbix
dpkg -i zabbix-release_7.0-2+debian12_all.deb # depaquetage du ficheir
apt-get update
apt-get install -y apache2 mariadb-server
apt-get install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf>
echo 'create database zabbix character set utf8mb4 collate utf8mb4_bin;' | mys> # creation de la base de donnees
echo "create user zabbix@localhost identified by 'password';" | mysql -u root # creation d'un utilisateur
echo 'grant all privileges on zabbix.* to zabbix@localhost;' | mysql -u root # donner a cet utilisateur tous les droits
echo 'set global log_bin_trust_function_creators = 1;' | mysql -u root
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-chara>
echo 'set global log_bin_trust_function_creators = 0;' | mysql -u root
sed -i 's/# DBPassword=/DBPassword=password/' /etc/zabbix/zabbix_server.conf
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
localectl set-locale LANG=en_US.UTF-8
systemctl restart zabbix-server zabbix-agent apache2
Pour renseigner les agents depuis la machine zabbix, on doit pouvoir accéder a i'interface web avec l'url http://172.16.0.122/zabbix
On sera ensuite invité à faire l'installation et quand l'installation sera finie, la page d'authentification de zabbix sera affichée à l'écran. Par défaut, l'utilisateur est "Admin" et le mot de passe est "zabbix"
Il faudra ensuite aller dans "Monitoring dans l'onglet de gauche ensuite "Host" et dans la partie supérieure à droite, cliquer sur le bouton "Create host". Comme template, on choisira "Linux by zabbix agent et puis create
On fera les mêmes étapes pour les machines ap33-prod et ap33-test
Serveur ap33-prod
Voici le script qui servira à installer zabbix-agent sur la machine a superviser :
export http_proxy=http://10.121.38.1:8080
export https_proxy=http://10.121.38.1:8080
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabb>
dpkg -i zabbix-release_7.0-2+debian12_all.deb
apt-get update
apt install -y zabbix-agent2
echo "Server=172.16.0.122" >> /etc/zabbix/zabbix_agent2.conf # renseigne le serveur de supervision pour que l'agent puisse communiquer
echo "ServerActive=172.16.0.122" >> /etc/zabbix/zabbix_agent2.conf
echo "Hostname=ap33-prod" >> /etc/zabbix/zabbix_agent2.conf
systemctl restart zabbix-agent2
Etape 5 : Mise en place d'une infrastructure de gestion centralisée des logs
AP33-mon est un serveur qui à comme but la gestion centralisée des journaux systèmes, via journald. Ce serveur recueille les logs provenant de ap33-test et ap33-prod et gwsio5 (switch).
Important : Un export des proxy est nécessaire afin de faire fonctionner les curls
export http_proxy=http://10.121.38.1:8080
export http_proxy=https://10.121.38.1:8080
Le script ci-dessous permet l'installation de journal-remote sur le serveur recepteur (ap33-mon), et permet l'activation permanente de ce service
#!/bin/bash
sudo timedatectl set-timezone Europe/Paris
sudo apt-get update
sudo apt-get install -y systemd-journal-remote
sudo systemctl enable --now systemd-journal-remote.socket
sudo cp /lib/systemd/system/systemd-journal-remote.service /etc/systemd/system
sudo sed -i 's/--listen-https=-3/--listen-http=-3/' /etc/systemd/system/systemd>
[[ -d /var/log/journal/remote ]] || sudo mkdir /var/log/journal/remote
sudo chown systemd-journal-remote /var/log/journal/remote
sudo systemctl daemon-reload
sudo systemctl restart systemd-journal-remote.service
ss -lnt
Le script ci-dessous permet l'installation et la configuration de journal-remote sur le serveur émetteur (ap33-prod et ap33-test) et d'envoyer ses logs vers la machine ap33-mon en précisant son adresse lors de l'utilisation du script
#!/bin/bash
# usage : ./journald-snd.sh 172.16.0.122
sudo timedatectl set-timezone Europe/Paris
sudo apt-get update
sudo apt-get install -y systemd-journal-remote
rpl="s/^# URL=/URL=http:\/\/${1}:19532/" # $1 represente l'adresse du recepteur
sudo sed -i "$rpl" /etc/systemd/journal-upload.conf
sudo systemctl enable --now systemd-journal-upload.service
sudo systemctl restart systemd-journal-upload.service
Etape 6: Automatisation avec ansible
Il est également possible d'installer les serveurs ap33-prod et ap33-test automatiquement grâce à ansible. Comme ces machines sont en production, il sera plus judicieux de le faire sur une machine test. Il faudra donc créer deux autres machines :
- ap33-ans qui contiendra les différents playbooks
- ap33-pt sera la machine cible et également la machine test
Pour avoir plus de détails sur chaque playbook, on peut voir dans le répertoire ansible.