# 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](https://gitea.lyc-lecastel.fr/uap33-2025-r/sdis29-3/src/branch/main/ansible).