Compare commits

...

9 Commits

Author SHA1 Message Date
92c6b3eb89 ajout du role zabbix-srv 2023-12-22 14:30:25 +01:00
bce5723e7b mise à jour du playbook journald-rcv 2023-12-22 14:20:12 +01:00
a7315fa4c8 Ajout role journald-rcv 2023-12-22 11:01:03 +01:00
8cfbefc4dc roles journald-snd 2023-12-22 09:43:24 +01:00
0697ad4eec ajout du service ssh dans Goss 2023-12-22 09:04:11 +01:00
ae54eb5cb8 README 2023-12-22 00:17:25 +01:00
2fe557e70b README 2023-12-22 00:08:40 +01:00
877f0a054f README 2023-12-22 00:01:51 +01:00
74433d2655 typo 2023-12-21 23:41:56 +01:00
15 changed files with 416 additions and 87 deletions

View File

@ -1,18 +1,22 @@
# gsb2024 # gsb2024
2024-12-19 ps 2024-12-21 ps
Environnement et playbooks ansible pour le projet GSB 2024 Environnement et playbooks ansible pour le projet GSB 2024
## Quickstart ## Quickstart
Prérequis : Prérequis :
* une machine Debian Bookworm * une machine LInux Debian Bookworm ou Windows
* VirtualBox * VirtualBox
* git
* fichier machines virtuelles **ova** : * fichier machines virtuelles **ova** :
* **debian-bookworm-gsb-2023c.ova** * **debian-bookworm-gsb-2023c.ova**
* **debian-buster-gsb-2023a.ova** * **debian-buster-gsb-2023a.ova**
## Les machines
* **s-adm** : routeur adm, DHCP + NAT, deploiement, proxy squid * **s-adm** : routeur adm, DHCP + NAT, deploiement, proxy squid
* **s-infra** : DNS maitre, autoconfiguration navigateurs avec **wpad** * **s-infra** : DNS maitre, autoconfiguration navigateurs avec **wpad**
* **r-int** : routage, DHCP * **r-int** : routage, DHCP
@ -38,6 +42,7 @@ Prérequis :
## Les playbooks ## Les playbooks
Il existe un playbook ansible pour chaque machine à installer, nommé comme la machine avec l'extension **.yml**
## Installation ## Installation
@ -49,25 +54,26 @@ et pour **s-fog** :
* **debian-buster-2023a.ova** (2023-01-06) * **debian-buster-2023a.ova** (2023-01-06)
* Debian Buster 10 - 2 cartes - 1 Go - stockage 20 Go * Debian Buster 10 - 2 cartes - 1 Go - stockage 20 Go
Les images **.ova** doivent etre stockées dans le répertoire habituel de téléchargement de l'utilisateur courant.
### Création d'une VM ### Création d'une VM
Récupérer le dépot gsb2024.git avec : Sur la machine physique, récupérer le dépot **gsb2024.git** avec :
```shell ```shell
git clone https://gitea.lyc-lecastel.fr/gsb/gsb2024.git git clone https://gitea.lyc-lecastel.fr/gsb/gsb2024.git
cd gsb2024
``` ```
On utilisera le script (bash) **mkvm** ou (PowerShell) **mkvm.ps1** pour créer une VM Virtualbox. On utilisera le script (bash) **mkvm** ou (PowerShell) **mkvm.ps1** pour créer une VM Virtualbox.
```shell ```shell
gsb2024> cd gsb2024/scripts
cd scripts mkvm -r s-adm
$ mkvm -r s-adm
``` ```
### Machine s-adm ### Machine s-adm
* créer la machine virtuelle **s-adm** avec **mkvm** comme décrit plus haut. * créer la machine virtuelle **s-adm** avec **mkvm** comme décrit plus haut.
* démarrer la VM puis ouvir une session
* utiliser le script de renommage comme suit : * utiliser le script de renommage comme suit :
```shell ```shell
bash chname <nouveau_nom_de_machine>` , puis redémarrer bash chname <nouveau_nom_de_machine>` , puis redémarrer
@ -89,20 +95,35 @@ bash chname <nouveau_nom_de_machine>` , puis redémarrer
### Pour chaque machine ### Pour chaque machine
#### Etape 1
- créer la machine avec **mkvm -r**, les cartes réseau sont paramétrées par **mkvm** selon les spécifications - créer la machine avec **mkvm -r**, les cartes réseau sont paramétrées par **mkvm** selon les spécifications
- utiliser le script de renommage comme suit : `bash chname <nouveau_nom_de_machine>` - ouvrir une session sur la machine considérée
- redémarrer - renomme la machine soit
* en utilisant le script de renommage comme suit :
` /root/tools/ansible/gsb2024/scripts/chname <nouveau_nom_de_machine>`
* soit avec :
```shell
NHOST=mavm
sed -i "s/bookworm/${NHOST}/g" /etc/host{s,name}
sudo reboot # on redemarre
```
#### Etape 2
- utiliser le script **gsb-start** : `bash gsb-start` - utiliser le script **gsb-start** : `bash gsb-start`
- ou sinon: - ou sinon:
```shell ```shell
mkdir -p tools/ansible ; cd tools/ansible mkdir -p tools/ansible ; cd tools/ansible
git clone https://gitea.lyc-lecastel.fr/gsb/gsb2024.git git clone https://gitea.lyc-lecastel.fr/gsb/gsb2024.git
cd gsb2024/pre cd gsb2024/pre
export DEPL=192.168.99.99 DEPL=192.168.99.99 bash gsbboot
bash gsbboot
cd ../.. cd ../..
bash pull-config bash pull-config
``` ```
#### Etape 3
- redémarrer - redémarrer
- **Remarque** : une machine doit avoir été redémarrée pour prendre en charge la nouvelle configuration - **Remarque** : une machine doit avoir été redémarrée pour prendre en charge la nouvelle configuration

View File

@ -1,72 +1,70 @@
package: package:
dnsmasq: dnsmasq:
installed: true installed: true
squid: squid:
installed: true installed: true
addr: addr:
tcp://depl.sio.lan:80: tcp://depl.sio.lan:80:
reachable: true reachable: true
timeout: 500 timeout: 500
port: port:
tcp:53: tcp:53:
listening: true listening: true
ip: ip:
- 0.0.0.0 - 0.0.0.0
tcp6:53: tcp6:53:
listening: true listening: true
ip: ip:
- '::' - '::'
udp:53: udp:53:
listening: true listening: true
ip: ip:
- 0.0.0.0 - 0.0.0.0
udp:67: udp:67:
listening: true listening: true
ip: ip:
- 0.0.0.0 - 0.0.0.0
udp6:53: udp6:53:
listening: true listening: true
ip: ip:
- '::' - '::'
service: service:
dnsmasq: dnsmasq:
enabled: true enabled: true
running: true running: true
squid: squid:
enabled: true enabled: true
running: true running: true
ssh: ssh:
enabled: true enabled: true
running: true running: true
user: user:
dnsmasq: dnsmasq:
exists: true exists: true
gid: 65534 gid: 65534
groups: groups:
- nogroup - nogroup
home: /var/lib/misc home: /var/lib/misc
shell: /usr/sbin/nologin shell: /usr/sbin/nologin
group:
ssh:
exists: true
command: command:
/sbin/sysctl net.ipv4.ip_forward: /sbin/sysctl net.ipv4.ip_forward:
exit-status: 0 exit-status: 0
stdout: stdout:
- net.ipv4.ip_forward = 1 - net.ipv4.ip_forward = 1
stderr: [] stderr: []
timeout: 10000 timeout: 10000
dns: dns:
depl.sio.lan: depl.sio.lan:
resolveable: true resolveable: true
timeout: 500 resolvable: null
timeout: 500
process: process:
dnsmasq: dnsmasq:
running: true running: true
squid: squid:
running: true running: true
interface: interface:
enp0s8: enp0s8:
exists: true exists: true
addrs: addrs:
- 192.168.99.99/24 - 192.168.99.99/24

83
localhost, Normal file
View File

@ -0,0 +1,83 @@
# Ce fichier viminfo a été généré par Vim 9.0.
# Vous pouvez l'éditer, mais soyez prudent.
# Viminfo version
|1,4
# 'encoding' dans lequel ce fichier a été écrit
*encoding=utf-8
# hlsearch on (H) or off (h):
~h
# Historique ligne de commande (chronologie décroissante) :
:q!
|2,0,1703236388,,"q!"
:x
|2,0,1703236381,,"x"
:x!
|2,0,1703236221,,"x!"
# Historique chaîne de recherche (chronologie décroissante) :
# Historique expression (chronologie décroissante) :
# Historique ligne de saisie (chronologie décroissante) :
# Historique Ligne de débogage (chronologie décroissante) :
# Registres :
""1 LINE 0
connection: local
|3,1,1,1,1,0,1703236374," connection: local"
"2 LINE 0
hosts: localhost
|3,0,2,1,1,0,1703236374," hosts: localhost"
# Marques dans le fichier :
'0 1 2 ~/tools/ansible/gsb2024/s-mon.yml
|4,48,1,2,1703236388,"~/tools/ansible/gsb2024/s-mon.yml"
'1 1 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,49,1,9,1703236339,"~/tools/ansible/gsb2024/s-mon.yml"
'2 9 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,50,9,9,1703236221,"~/tools/ansible/gsb2024/s-mon.yml"
'3 9 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,51,9,9,1703236221,"~/tools/ansible/gsb2024/s-mon.yml"
'4 11 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,52,11,9,1703236221,"~/tools/ansible/gsb2024/s-mon.yml"
'5 11 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,53,11,9,1703236221,"~/tools/ansible/gsb2024/s-mon.yml"
'6 1 13 ~/tools/ansible/gsb2024/s-mon.yml
|4,54,1,13,1703236013,"~/tools/ansible/gsb2024/s-mon.yml"
'7 1 13 ~/tools/ansible/gsb2024/s-mon.yml
|4,55,1,13,1703236013,"~/tools/ansible/gsb2024/s-mon.yml"
'8 1 13 ~/tools/ansible/gsb2024/s-mon.yml
|4,56,1,13,1703236013,"~/tools/ansible/gsb2024/s-mon.yml"
'9 1 13 ~/tools/ansible/gsb2024/s-mon.yml
|4,57,1,13,1703236013,"~/tools/ansible/gsb2024/s-mon.yml"
# Liste de sauts (le plus récent en premier) :
-' 1 2 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,1,2,1703236388,"~/tools/ansible/gsb2024/s-mon.yml"
-' 1 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,1,9,1703236339,"~/tools/ansible/gsb2024/s-mon.yml"
-' 9 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,9,9,1703236318,"~/tools/ansible/gsb2024/s-mon.yml"
-' 11 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,11,9,1703236318,"~/tools/ansible/gsb2024/s-mon.yml"
-' 11 9 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,11,9,1703236221,"~/tools/ansible/gsb2024/s-mon.yml"
-' 1 13 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,1,13,1703236018,"~/tools/ansible/gsb2024/s-mon.yml"
-' 1 13 ~/tools/ansible/gsb2024/s-mon.yml
|4,39,1,13,1703236013,"~/tools/ansible/gsb2024/s-mon.yml"
# Historique des marques dans les fichiers (les plus récentes en premier) :
> ~/tools/ansible/gsb2024/s-mon.yml
* 1703236386 0
" 1 2
^ 9 10
. 2 0
+ 10 0
+ 2 0

View File

@ -5,7 +5,7 @@ prj=gsb2024
opt="" opt=""
if [ -z ${UREP+x} ]; then if [ -z ${UREP+x} ]; then
UREP=https://gitea.lyc-lecastel.fr/gsb/gsb2024.git UREP=https://gitea.lyc-lecastel.fr/gsb/gsb2024.git
fi fi
dir=/root/tools/ansible dir=/root/tools/ansible

View File

@ -0,0 +1,16 @@
# Role syslog : installation et configuration de syslog serveur (centralisation des logs)
***
Ce role a pour objectif de activer le module UDP dans le fichier /etc/rsyslog.conf pour accepter les logs entrants des machines concernées :
on décommente la ligne suivante :
'module(load="imudp"\)'
Ensuite le role active l'écoute du module UDP sur le port 514 afin de pouvoir envoyer les logs.
on décommente la ligne suivante dans le même fichier que ci-dessus :
'input\(type="imudp" port="514"\)'
pour finir le role va charger le module UDP afin que la machine **s-infra** puissent reçevoir les logs entrants.
Pour faire cela on décommente la ligne suivante dans le fichier /etc/systemd/journald.conf :
'ForwardToSyslog=yes'
pour finir le role va redemmarer automatiquement les services journald et rsyslog

View File

@ -0,0 +1,5 @@
---
- name: restart journald
service:
name: systemd-journald.service
state: restarted

View File

@ -0,0 +1,37 @@
---
- name: Installation de systemd-journal-remote
apt:
name: systemd-journal-remote
state: present
- name: Enable et start systemd-journal-remote.socket
systemd:
name: systemd-journal-remote.socket
enabled: yes
state: started
- name: Copie de systemd-journal-remote.service dans /etc/systemd/system
copy:
src: /lib/systemd/system/systemd-journal-remote.service
dest: /etc/systemd/system/systemd-journal-remote.service
remote_src: yes
backup: yes
- name: Modification de systemd-journal-remote.service
replace:
path: /etc/systemd/system/systemd-journal-remote.service
regexp: '--listen-https=-3'
replace: '--listen-http=-3'
- name: Creation /var/log/journal/remote directory
file:
path: /var/log/journal/remote
state: directory
owner: systemd-journal-remote
- name: Redemarrage de systemd
systemd:
daemon_reload: yes
notify:
- restart jourald

View File

@ -0,0 +1,16 @@
# Role syslog : installation et configuration de syslog serveur (centralisation des logs)
***
Ce role a pour objectif de activer le module UDP dans le fichier /etc/rsyslog.conf pour accepter les logs entrants des machines concernées :
on décommente la ligne suivante :
'module(load="imudp"\)'
Ensuite le role active l'écoute du module UDP sur le port 514 afin de pouvoir envoyer les logs.
on décommente la ligne suivante dans le même fichier que ci-dessus :
'input\(type="imudp" port="514"\)'
pour finir le role va charger le module UDP afin que la machine **s-infra** puissent reçevoir les logs entrants.
Pour faire cela on décommente la ligne suivante dans le fichier /etc/systemd/journald.conf :
'ForwardToSyslog=yes'
pour finir le role va redemmarer automatiquement les services journald et rsyslog

View File

@ -0,0 +1,10 @@
---
- name: enable systemd-journal-upload
service:
name: systemd-journal-upload.service
state: enabled
- name: restart systemd-journal-upload
service:
name: systemd-journal-upload.service
state: restarted

View File

@ -0,0 +1,31 @@
---
- name: 1. installe systemd-journal-remote
apt:
name:
- systemd-journal-remote
state: present
- name: 2. indique l'URL journald distant
replace:
path: /etc/systemd/journal-upload.conf
regexp: '^#URL='
replace: 'URL=http://syslog.gsb.adm:19532'
- name: 3. Just force systemd to reread configs (2.4 and above)
ansible.builtin.systemd_service:
daemon_reload: true
- name: 4. active le service systemd-journald-upload
ansible.builtin.service:
name: systemd-journal-upload.service
enabled: yes
- name: 5. redemarre systemd-journal-upload.service
service:
name: systemd-journal-upload.service
state: restart
#notify:
#- enable systemd-journal-upload
#- restart systemd-journal-upload

View File

@ -0,0 +1,18 @@
# Rôle nagios
***
Rôle Nagios pour la supervision des différentes machines
## Tables des matières
1. [Que fait le rôle Zabbix ?]
## Que fait le rôle Nagios ?
### Installation et configuration de Zabbix
Le rôle Zabbix va installer apache2 pour le serveur web, zabbix-server pour la supervision, zabbix qui sera notre outil de supervision.
Lors de la première connexion, on indique les identifiants de la BDD avec "zabbix" et "password".
Pour l'id de Zabbix, c'est "Admin" et "zabbix", à l'adresse "https://s-mon/zabbix".

View File

@ -0,0 +1,17 @@
- name: restart zabbix server
service:
name: zabbix-server
state: restarted
enabled: yes
- name: restart apache2
service:
name: apache2
state: restarted
enabled: yes
- name: restart zabbix agent
service:
name: zabbix-agent
state: restarted
enabled: yes

View File

@ -0,0 +1,78 @@
- name: 1. Récupérer les dépots de zabbix
get_url:
url: https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian12_all.deb
dest: /tmp
- name: 2. Installer les depots
apt:
deb: "/tmp/zabbix-release_6.4-1+debian12_all.deb"
state: present
- name: 3. Lancer un apt update
apt:
update_cache: yes
- name: 4. Installer les paquets de zabbix et mariadb
apt:
name:
- zabbix-server-mysql
- zabbix-frontend-php
- zabbix-apache-conf
- zabbix-sql-scripts
- zabbix-agent
- mariadb-server
- python3-pymysql
state: present
- name: 5. s'assurer que mariadb est en fonctionnement
service:
name: mariadb
state: started
- name: 6. Créer la base de données
community.mysql.mysql_db:
name: zabbix
encoding: utf8mb4
collation: utf8mb4_bin
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 7. Creer un utilisateur et lui attribuer tous les droits
community.mysql.mysql_user:
name: zabbix
password: password
priv: '*.*:ALL,GRANT'
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 8. Modifier une variable pour importer un schema
community.mysql.mysql_variables:
variable: log_bin_trust_function_creators
value: 1
mode: global
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 9. Importer le schema initial
shell: zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -ppassword zabbix
- name: 10. Modifier la variable pour le schema
community.mysql.mysql_variables:
variable: log_bin_trust_function_creators
value: 0
mode: global
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 11. Configurer le mdp de la db
replace:
path: /etc/zabbix/zabbix_server.conf
regexp: '^# DBPassword='
replace: 'DBPassword=password'
- name: 12. Lancer le service zabbix
service:
name:
- zabbix-server
- zabbix-agent
- apache2
state: restarted
enabled: yes

View File

@ -8,7 +8,7 @@
- dns-master - dns-master
- webautoconf - webautoconf
- snmp-agent - snmp-agent
# - syslog-cli - journald-snd
- ssh-cli - ssh-cli
- post - post

View File

@ -1,16 +1,15 @@
- name: Nagios ---
hosts: localhost - name: Zabbix
connection: local hosts: all
become: yes # become: yes
become_method: sudo # become_method: sudo
become_user: root # become_user: root
vars: # vars:
access: "Restricted Nagios4 Access" # access: "Restricted Nagios4 Access"
roles: roles:
- base - base
- goss - goss
- nagios
- postfix
- ssh-cli - ssh-cli
- syslog - zabbix-srv
- journald-rcv
- post - post