17 Commits

Author SHA1 Message Date
006a4c5f4f new file: .wg.yml.swp
modified:   README.md
2024-11-14 09:32:27 +00:00
288ec07a5e Modification du fichier README.md 2024-11-14 09:28:56 +00:00
cd2f872f1f modification des fichiers 2024-11-14 08:43:44 +00:00
8a44865367 creation du playbook apdbdump.yml 2024-11-14 08:36:45 +00:00
Jarod Pauchet
47472f2d25 Ajout du 2ème playbook 2024-11-08 11:55:54 +01:00
Jarod Pauchet
ffc05b69bc Merge branch 'main' of https://gitea.lyc-lecastel.fr/uap33-2025-r/sdis29-3 2024-11-08 11:13:59 +01:00
Jarod Pauchet
357b806b3b Modification du README 2024-11-08 11:12:30 +01:00
54beaecc8e Actualiser Ansible/README.md 2024-11-08 10:54:45 +01:00
Jarod Pauchet
33d5738c82 Ajout du README dans ansible 2024-11-08 10:42:13 +01:00
Jarod Pauchet
a5b306b461 Ajout du playbook apbase.yml 2024-11-08 10:32:30 +01:00
Jarod Pauchet
4605916258 Ajout Gestion centralisée des logs 2024-11-08 08:57:43 +01:00
Rotsipitia Rahaingoharivahitra
24c56d6254 modifié : README.md 2024-11-07 17:18:59 +01:00
Jarod Pauchet
6da461d49e Modification 2024-11-07 16:28:10 +01:00
Jarod Pauchet
c27719e062 Importation de la base de données 2024-11-07 15:40:05 +01:00
Jarod Pauchet
1a8bf81629 Modification de la mise en page 2024-11-07 14:47:20 +01:00
Jarod Pauchet
72e34d5d3c Update de la mise en forme 2024-11-07 14:43:19 +01:00
Jarod Pauchet
158aab3699 Mise en place des modifications communs 2024-11-07 11:55:34 +01:00
7 changed files with 256 additions and 26 deletions

172
README.md
View File

@@ -1,16 +1,42 @@
# Projet SDIS29 - 2025 - Groupe 3 # Projet SDIS29 - 2025 - Groupe 3
Voici un plan d'installation du projet ap3 : **Lastest 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 : ## Etape 1 - Installation des machines virtuelles KVM :
Clonage intégrale de la machine debian-12.7-templete ### Paramètres communs
--> Nommage de trois machine, * Memoire : 1 Go
* **ap33-prod** (id = 6120), IP : 172.16.0.120/24 ; gateway : 172.16.0.254 * Disque : 10 Go
* **ap33-test** (id = 6121), IP : 172.16.0.121/24 ; gateway : 172.16.0.254
* **ap33-mon** (id = 6122), IP : 172.16.0.122/24 ; gateway : 172.16.0.254
Implémentation des clés SSH publique avec **cloud-int** 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 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
@@ -22,21 +48,23 @@ Sur les trois machines faire les commandes suivantes :
sudo su - sudo su -
cd /etc/apt cd /etc/apt
wget depl/sio/api/apt.conf wget depl/sio/api/apt.conf
timedatectl set-timezone Europe/Paris # Mise à jour de la date timedatectl set-timezone Europe/Paris # Mise à jour de la date
apt update && apt upgrade # Mise à jour de la machine apt update && apt upgrade # Mise à jour de la machine
apt install qemu-guest-agent apt install qemu-guest-agent
```` ````
## Etape 3 : Configuration des services des machines ## Etape 3 : Configuration des services des machines
**Serveur ap33-prod** ### **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 - sudo su -
apt install tomcat10 mariadb-server # Installation des paquets apt install tomcat10 mariadb-server # Installation des paquets
export http_proxy="http://10.121.38.1:8080/" # Exportation des ports export http_proxy="http://10.121.38.1:8080/" # Exportation des ports
export https_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 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 chmod +rx /usr/local/bin/goss # Donner les droits de lecture et d'execution sur le dossier Goss
goss autoadd mariadb-server goss autoadd mariadb-server
goss autoadd tomcat10 goss autoadd tomcat10
goss add service mysql goss add service mysql
@@ -44,15 +72,17 @@ goss add interface eth0
goss add http http://ap33-prod:8080 goss add http http://ap33-prod:8080
```` ````
**Serveur ap33-test** ### **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 - sudo su -
apt install tomcat10 mariadb-server phpmyadmin # Installation des paquets apt install tomcat10 mariadb-server phpmyadmin # Installation des paquets
export http_proxy="http://10.121.38.1:8080/" # Exportation des ports export http_proxy="http://10.121.38.1:8080/" # Exportation des ports
export https_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-am> 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> chmod +rx /usr/local/bin/goss # Donner les droits de lecture et d'execution sur le dossier Goss
goss autoadd mariadb-server goss autoadd mariadb-server
goss autoadd tomcat10 goss autoadd tomcat10
goss autoadd phpmyadmin goss autoadd phpmyadmin
@@ -61,14 +91,104 @@ goss add interface eth0
goss add http http://ap33-test:8080 goss add http http://ap33-test:8080
```` ````
**Serveur ap33-mon** 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;
```` ````
**Lastest Update** : le 07/11/2024 à 11h45 par Jarod PAUCHET ## Etape 4 : Supervision des serveurs ap33-prod et ap33-test
**Oldest Update** : le 07/11/2024 à 11h30 par Jarod PAUCHET ### **Serveur ap33-mon**
Voici le script d'installation de zabbix (à exécuter une seule fois)
**Oldest Update** : le 07/11/2024 à 10h45 par Jarod PAUCHET ````
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
````

BIN
ansible/.wg.yml.swp Normal file

Binary file not shown.

28
ansible/README.md Normal file
View File

@@ -0,0 +1,28 @@
## **Mode d'emplois** : Les playbooks ci-dessous peuvent être déployer de la façon suivante :
### Playbook : apbase.yml
Ce playbook permet de faire la configuration de base :
* changement de la timezone
* recuperation du fichier apt.conf pour pouvoir acceder a internet
* installation des paquets nécessaires pour la réalisation du projet (tomcat, ant, mariadb-server)
* installation du paquet qemu-guest-agent
Pour l'exécuter : ````ansible-playbook -i hosts apbase.yml````
### Playbook : apdb.yml
Ce playbook permet de :
* installer python3 indispensable pour mysql
* créer la base de données sdis29
* créer un nouvel utilisateur qui aura tous les privilèges
* copier le dump mysql sur la machine pt
* importer le fichier sdis29.sql sur la base de données
**NB**: Le module **login_unix_socket: /run/mysqld/mysqld.sock** est nécessaire à chaque fois qu'on fait appel à la base de données
Pour l'exécuter :````ansible-playbook - i hosts apdb.yml````
### Playbook : apdbdump.yml
Ce playbook permet de faire une sauvegarde de la base de données :
* export de la base de données
* recupération du fichier dump
Pour l'exécuter : ````ansible-playbook -i hosts apdbdump.yml````

28
ansible/apbase.yml Normal file
View File

@@ -0,0 +1,28 @@
---
- hosts: all
become: yes
tasks:
- name: changement de la timezone
timezone:
name: Europe/Paris
- name: configure le fichier apt.conf pour le proxy
copy:
content: |
Acquire::http::Proxy "http://10.121.38.1:8080";
Acquire::https::Proxy "http://10.121.38.1:8080";
dest: /etc/apt/apt.conf
- name: installation des paquets de tomcat10, ant et mariadb-server
apt:
name:
- tomcat10
- ant
- mariadb-server
state: present
- name: installation de qemu-guest-agent
apt:
name: qemu-guest-agent
state: present

34
ansible/apdb.yml Normal file
View File

@@ -0,0 +1,34 @@
---
- hosts: all
become: yes
tasks:
- name: installation de python3
apt:
name: python3-pymysql
- name: creation de la base de donnees "sdis29"
community.mysql.mysql_db:
name: sdis29
state: present
login_unix_socket: /run/mysqld/mysqld.sock
- name: Creation d'un utilisateur avec tous les privileges
community.mysql.mysql_user:
name: admin
password: password123*
priv: '*.*:ALL'
state: present
login_unix_socket: /run/mysqld/mysqld.sock
- name: copie du dump mysql sur la machine pt
copy:
src: sdis29.sql
dest: /tmp
- name: Import du fichier sdis29.sql sur la base de données sdis29
community.mysql.mysql_db:
name: sdis29
state: import
target: /tmp/sdis29.sql
force: true
login_unix_socket: /run/mysqld/mysqld.sock

18
ansible/apdbdump.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- hosts: all
become: yes
tasks:
- name: export de la database sdis29
community.mysql.mysql_db:
state: dump
name: sdis29
target: /tmp/sdis29-dump.sql
login_unix_socket: /run/mysqld/mysqld.sock
- name: recuperation du fichier de dump sur la machine locale
fetch:
src: /tmp/sdis29-dump.sql
dest: sdis29-dump.sql
flat: yes

2
ansible/hosts Normal file
View File

@@ -0,0 +1,2 @@
[pt]
ap33-pt