2024-11-15 08:55:40 +00:00
2024-11-15 08:55:40 +00:00
2024-11-14 09:53:24 +00:00

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.

Description
No description provided
Readme 60 KiB
Languages
Shell 100%