Compare commits

...

70 Commits

Author SHA1 Message Date
bbbb
45e4401dcc maj lb-front-ssl pour une version fonctionnelle 2024-06-04 15:49:33 +02:00
sio user
dc50059f19 Maj version ova README.md 2024-05-23 16:15:40 +02:00
sio user
ada657401f Mef 2 2024-05-23 16:13:12 +02:00
sio user
b126e7f9e3 Mef README.md 2024-05-23 16:11:47 +02:00
sio user
f9f3e8da8e Maj version debian-bookworm-gsb-2024a -> b 2024-05-23 16:08:27 +02:00
Jimmy Chevanne
be4f3b9030 maj mkvm 2024-05-23 11:26:02 +02:00
c590edb875 maj role zabbix-cli et awx-user sur s-adm et s-infra 2024-05-02 09:49:05 +02:00
3cd52a230e maj awx 2024-05-02 08:39:34 +02:00
root
8dd65d65eb role awx actualisé 2024-05-01 12:02:05 +02:00
a
aac0f13134 script mkvm.ps1 2024-04-17 21:09:06 +02:00
a
ea60c89bf1 fix script mkvm.ps1 2024-04-17 09:01:47 +02:00
bbbb
272867304a reparation script mkvm.ps1 2024-04-16 11:27:20 +02:00
sio user
b53cd8c848 MAJ README.md apres chgt version images .ova 2024-04-12 09:00:32 +02:00
Jimmy Chevanne
8ed9ebe6f8 maj mkvm.ps1 2024-04-12 08:54:27 +02:00
Jimmy Chevanne
c1fe781ca2 maj mkvm 2024-04-12 08:50:01 +02:00
gsb
c2c1e8acb7 Actualiser scripts/mkvm.ps1 2024-03-03 19:40:35 +01:00
Jimmy Chevanne
5176ad216c maj lb-front-ssl 2024-02-16 15:08:17 +01:00
Jimmy Chevanne
e45118eef1 maj role lb-front-ssl 2024-02-16 14:48:52 +01:00
root
959e056c5f ajout role firewalld 2024-02-09 10:57:20 +01:00
Jimmy Chevanne
8d7c5f7cfb creation role lb-front-ssl 2024-02-05 16:02:10 +01:00
Alhassane Kone
80295cba99 script mkvm mise a jour 2024-02-02 15:00:22 +01:00
root
35e816c2eb modif role kea 2024-02-01 11:51:52 +01:00
root
b1e4b50982 maj README windows 2024-02-01 11:40:25 +01:00
root
d65fe53ef8 role AWX 2024-01-30 12:55:46 +01:00
sio user
451c8ba094 roles awx-usser et awx-user-cli 2024-01-30 12:04:34 +01:00
root
88061eb89d reorganisation du role s-awx et s-awx-post 2024-01-30 11:55:30 +01:00
root
6fbad9d9fa MAJ role AWX 2024-01-30 11:38:16 +01:00
sio user
30c7275ba6 filebeat... 2024-01-30 11:25:20 +01:00
root
33529f2781 ajout role zabbix-cli pour vm à superviser & token à jour avec BD 2024-01-30 10:48:57 +01:00
Flo
77a7f3c567 update zabbix 2024-01-29 21:15:11 +01:00
root
a3235af304 modifs diverses 2024-01-29 18:06:09 +01:00
root
17647b17da ajout role awx 2024-01-29 18:02:49 +01:00
root
78230b7f21 bash 2024-01-29 17:05:20 +01:00
root
7d90939ea3 clé pub & priv 2024-01-29 17:02:55 +01:00
root
7c01d0aa18 chgt role sshcli 2024-01-29 17:02:31 +01:00
root
ea513e616d explication savenextcloud 2024-01-29 16:47:47 +01:00
Adam Alphonso
1d7fa35e48 maj README 2024-01-29 16:43:37 +01:00
Adam Alphonso
250483501e Merge branch 'main' of https://gitea.lyc-lecastel.fr/gsb/gsb2024 2024-01-29 16:36:29 +01:00
Adam Alphonso
4abf4d4950 maj script r-vp1 2024-01-29 16:35:03 +01:00
root
8ebf476e05 script clé publique 2024-01-29 16:34:12 +01:00
root
26ae726457 création readme s-backup 2024-01-29 16:16:24 +01:00
root
b1bd102d85 création readme s-backup 2024-01-29 16:04:05 +01:00
root
6cfe40b998 création readme s-backup 2024-01-29 15:56:30 +01:00
florian
e48d63a8bc update 2024-01-29 14:32:54 +01:00
florian
873b6b6def update readme 2024-01-29 14:28:53 +01:00
florian
3d94e6c050 update README 2024-01-29 14:23:08 +01:00
root
151c0adf88 elk-filebeat-cli filebeat.yml 2024-01-26 15:48:18 +01:00
florian
745bc05e76 Merge branch 'main' of https://gitea.lyc-lecastel.fr/gsb/gsb2024 2024-01-26 15:00:44 +01:00
florian
82561d5d0a update gotify.sh 2024-01-26 14:59:57 +01:00
root
df1000e1b5 modif droit copie cle privee 2024-01-26 14:55:25 +01:00
florian
0824fd9621 update 2024-01-26 14:22:09 +01:00
florian
3c680769be update zabbix-srv pour gotify 2024-01-26 14:15:31 +01:00
Jimmy Chevanne
8ceaa8791f maj readme zabbix-srv 2024-01-26 10:55:33 +01:00
root
5f5aea168c chgt version ELK : 8.11.4 2024-01-26 09:56:04 +01:00
sio user
ef5701c5d1 mkvm: hash table pour memoire VM 2024-01-26 09:33:11 +01:00
Jimmy Chevanne
f74728292b peaufinage README lb 2024-01-26 09:27:29 +01:00
Jimmy Chevanne
bfdca163f7 ajout README roles lb 2024-01-26 09:23:17 +01:00
florian
cb1b315819 update mkvm.ps1 2024-01-26 08:56:23 +01:00
phil
c086bcdc7f mkvm : gere memoire VM 2024-01-26 00:08:14 +01:00
sio user
1134ca261d MAJ role elk ... 2024-01-25 17:11:56 +01:00
Jim
b0d81dc69c maj role lb-front 2024-01-25 16:29:11 +01:00
root
331b8b0fb6 maj README nextcloud 2024-01-25 15:43:50 +01:00
sio user
4025f996dc modif inst-depl pour zabbix.sql.gz et SRC 2024-01-25 14:44:50 +01:00
Jimmy Chevanne
a1ee9c6207 maj zabbix-srv 2024-01-25 11:54:57 +01:00
root
a1442e534d Premier commit ... 2024-01-25 11:40:07 +01:00
root
e78ef5948b modif save 2024-01-25 11:23:58 +01:00
root
298f105805 maj zabbix-srv 2024-01-25 11:22:18 +01:00
root
d88745e741 modif s-backup.yml 2024-01-25 11:11:56 +01:00
root
fffcb22db8 modif cle priv 2024-01-25 11:09:25 +01:00
Jimmy Chevanne
abb8c15028 maj zabbix-srv 2024-01-25 11:01:02 +01:00
58 changed files with 907 additions and 112 deletions

View File

@ -1,6 +1,8 @@
# gsb2024
2024-01-19 11h45 ps
* 2024-05-23 16h07 ps
* 2024-04-12 8h55 ps
* 2024-01-19 11h45 ps
Environnement et playbooks **ansible** pour le projet **GSB 2024**
@ -11,8 +13,8 @@ Prérequis :
* VirtualBox
* git
* fichier machines virtuelles **ova** :
* **debian-bookworm-gsb-2023c.ova**
* **debian-bullseye-gsb-2024a.ova**
* **debian-bookworm-gsb-2024b.ova**
* **debian-bullseye-gsb-2024b.ova**
## Les machines
@ -49,12 +51,12 @@ Il existe un playbook ansible pour chaque machine à installer, nommé comme la
## Installation
On utilisera les images de machines virtuelle suivantes :
* **debian-bookworm-gsb-2023c.ova** (2023-12-18)
* Debian Bookworm 12.4 - 2 cartes - 1 Go - Stockage 20 Go
* **debian-bookworm-gsb-2024b.ova** (2024-05-23)
* Debian Bookworm 12.5 - 2 cartes - 1 Go - Stockage 20 Go
et pour **s-fog** :
* **debian-bullseye-2024a.ova** (2024-01-06)
* Debian Bullseye 11.8 - 2 cartes - 1 Go - stockage 20 Go
* **debian-bullseye-2024b.ova** (2024-04-11)
* Debian Bullseye 11.9 - 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.

7
firewalld.yml Normal file
View File

@ -0,0 +1,7 @@
---
- hosts: localhost
connection: local
become: yes
roles:
- firewalld

6
goss/s-awx.yaml Normal file
View File

@ -0,0 +1,6 @@
interface:
enp0s8:
exists: true
addrs:
- 172.16.0.22/24
mtu: 1500

View File

@ -11,7 +11,7 @@ GITPRJ=gsb2024
apt-get update
apt-get install -y lighttpd git
STOREREP="/var/www/html/gsbstore"
SRC="${SRC:-http://depl.sio.lan/gsbstore}"
GLPIREL=10.0.11
str="wget -nc -4 https://github.com/glpi-project/glpi/releases/download/${GLPIREL}/glpi-${GLPIREL}.tgz"
@ -39,7 +39,7 @@ str7="wget -nc -4 https://github.com/goss-org/goss/releases/latest/download/dgos
str8="wget -nc -4 'https://gestsup.fr/index.php?page=download&channel=stable&version=3.2.30&type=gestsup' -O gestsup_3.2.30.zip"
#METRICBEAT ET FILEBEAT
ELKREL=8.11.3
ELKREL=8.11.4
str81="wget -nc -4 https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${ELKREL}-amd64.deb"
str82="wget -nc -4 https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${ELKREL}-windows-x86_64.zip"
str83="wget -nc -4 https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-${ELKREL}-windows-x86_64.zip"
@ -50,6 +50,12 @@ str84="wget -nc -4 https://artifacts.elastic.co/downloads/beats/metricbeat/metri
(cat <<EOT > "${STOREREP}/getall"
#!/bin/bash
if [[ -z "${SRC+x}" ]]; then
echo "erreur : variable SRC indefinie"
echo " SRC : URL serveur deploiement"
echo "export SRC=http://depl.sio.adm/gsbstore ; ./$0"
exit 1
fi
${str}
${str31}
@ -72,6 +78,7 @@ ${str81}
${str82}
${str83}
${str84}
wget -nc -4 "${SRC}/zabbix.sql.gz" -O zabbix.sql.gz
EOT
)

View File

@ -1,12 +1,14 @@
---
- hosts: localhost
connection: local
become: yes
roles:
- base
- goss
- r-ext
- snmp-agent
- zabbix-cli
- ssh-cli
# - syslog-cli
- post

View File

@ -1,6 +1,7 @@
---
- hosts: localhost
connection: local
become: yes
roles:
- base
@ -9,5 +10,5 @@
- ssh-cli
# - syslog-cli
- dhcp
- snmp-agent
- zabbix-cli
- post

View File

@ -0,0 +1,24 @@
---
- name: Creation user awx
ansible.builtin.user:
name: awx
groups: sudo
append: yes
- name: Cration d'un mdp pour user awx
user:
name: awx
password: '$5$1POIEvs/Q.DHI4/6$RT6nl42XkekxTPKA/dktbnCMxL8Rfk8GAK7NxqL9D70'
- name: Get awx key_pub
get_url:
url: http://s-adm.gsb.adm/gsbstore/id_rsa_awx.pub
dest: /tmp
- name: Set authorized key taken from file /tmp
ansible.posix.authorized_key:
user: awx
state: present
key: "{{ lookup('file', '/tmp/id_rsa_awx.pub') }}"

View File

@ -0,0 +1,20 @@
---
- name: Creation user awx, cle SSH et group sudo
ansible.builtin.user:
name: awx
groups: sudo
append: yes
shell: /bin/bash
generate_ssh_key: yes
#- name: Creation mdp user awx
# ansible.builtin.user:
#name:
#user: awx
# password: '$5$1POIEvs/Q.DHI4/6$RT6nl42XkekxTPKA/dktbnCMxL8Rfk8GAK7NxqL9D70'
- name: Copie cle publique dans gsbstore
copy:
src: /home/awx/.ssh/id_rsa.pub
dest: /var/www/html/gsbstore/id_rsa_awx.pub
remote_src: yes

26
roles/awx/README.md Normal file
View File

@ -0,0 +1,26 @@
# Rôle awx
***
Rôle awx: Configuration d'un serveur AWX avec k3s.
## Tables des matières
1. [Que fait le rôle AWX ?]
2. [Connexion à l'interface WEB du serveur AWX]
**AWX** est l'application développée par **RedHat** permettant de lancer des playbooks **ansible** depuis une interface web évoluée plutôt qu'en ligne de commande. **AWX** utlise kubernetes mise en oeuvre ici avec **k3s**.
## Que fait le rôle AWX ?
Le rôle **awx** installe et configure un serveur **AWX** avec **k3s** pour cela le role:
- Installe **k3s** en spécifiant l'adresse IP ainsi que l'interface d'écoute
- Clone le dépot **Github** **awx-on-k3s**
- Procéde au déploiement du pod **awx-operator**
- Génére un certifiacat auto-signé utlisée par le serveur **AWX** en utilisant **OpenSSL**
- Edite le fichier awx.yaml afin d'y indique le nom d'hote du serveur en accord avec le nom utlisé par les certificats
- Déploie le serveur **AWX**
- Test l'accésibilité du serveur **AWX**.
### Connexions à l'interface WEB du serveur AWX ###
Une fois le role **awx** terminé il est possible de se connecter à l'interface web duserveur depuis un navigateur.
S'assurer que votre machine puisse résoudre **s-awx.gsb.lan**
- Se connecter sur : **https://s-awx.gsb.lan**
- Utlisateur: **admin** / Mot de passe: **Ansible123!**

79
roles/awx/tasks/main.yml Normal file
View File

@ -0,0 +1,79 @@
---
- name: Installation de k3s ...
ansible.builtin.shell: curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.5+k3s1 sh -s - --write-kubeconfig-mode 644 --node-ip "{{ awx_ip }}" --flannel-iface "{{ awx_if }}"
- name: Clonage du dépot awx-on-k3s
git:
repo: https://github.com/kurokobo/awx-on-k3s.git
dest: "{{ awx_dir }}"
clone: yes
force: yes
- name: Git checkout
ansible.builtin.shell: "git checkout 2.10.0"
args:
chdir: "{{ awx_dir }}"
- name: Deploiement AWX Operator ...
ansible.builtin.shell: "kubectl apply -k operator"
args:
chdir: "{{ awx_dir }}"
#- name: Git checkout
#ansible.builtin.git:
#repo: 'https://github.com/kurokobo/awx-on-k3s.git'
#dest: "{{ awx_dir }}"
#version: release-2.10.0
- name: Generation de certificat auto-signé avec OpenSSL
ansible.builtin.shell: 'openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -out ./base/tls.crt -keyout ./base/tls.key -subj "/CN={{ awx_host }}/O={{ awx_host }}" -addext "subjectAltName = DNS:{{ awx_host }}"'
args:
chdir: "{{ awx_dir }}"
- name: Changement de la ligne hostname dans le fichier awx.yaml
replace:
path: ~/tools/awx-on-k3s/base/awx.yaml
regexp: 'awx.example.com'
replace: '{{ awx_host }}'
backup: yes
- name: creation du repertoire postgres-13
ansible.builtin.file:
path: /data/postgres-13
state: directory
mode: '0755'
- name: Creation repertoire projects
ansible.builtin.file:
path: /data/projects
state: directory
owner: 1000:0
- name: Deploiement d'AWX ...
ansible.builtin.shell: "kubectl apply -k base"
args:
chdir: "{{ awx_dir }}"
- name: Test d'accésibilité de l'interface web AWX
ansible.builtin.uri:
url: "https://s-awx.gsb.lan"
follow_redirects: none
method: GET
validate_certs: false
register: _result
until: _result.status == 200
retries: 60 # 90*10 seconds = 15 min
delay: 10 # Every 10 seconds
- debug:
msg: "L'installation du serveur AWX est terminée."
- debug:
msg: "Connectez-vous sur: https://s-awx.gsb.lan"
- debug:
msg: "Nom d'utilisateur: admin / mdp: Ansible123!"

View File

@ -1 +1 @@
BEATVER: "8.11.5"
BEATVER: "8.11.4"

View File

@ -1,17 +1,51 @@
---
- name: Récupération de filebeat
get_url:
url: http://s-adm.gsb.adm/gsbstore/filebeat-${BEATVAR}-amd64.deb
url: "http://s-adm.gsb.adm/gsbstore/filebeat-{{ BEATVER }}-amd64.deb"
dest: /tmp/
- name: Installation de filebeat
apt:
deb: /tmp/filebeat-${BEATVEAR}-amd64.deb
deb: "/tmp/filebeat-{{ BEATVER }}-amd64.deb"
<<<<<<< HEAD
- name: Chgt filebeat.yml - localhost:9200 - Elastic
replace:
path: /etc/filebeat/filebeat.yml
regexp: 'localhost:9200'
replace: 's-elk.gsb.adm:9200'
backup: yes
- name: Chgt filebeat.yml - localhost:5601 - Kibana
replace:
path: /etc/filebeat/filebeat.yml
regexp: 'localhost:5601'
replace: 's-elk.gsb.adm:5601'
backup: yes
- name: Chgt filebeat.yml - user - Kibana
replace:
path: /etc/filebeat/filebeat.yml
regexp: 'user:5601'
replace: 's-elk.gsb.adm:5601'
backup: yes
#- name: Changement du fichier de conf
# copy:
# src: filebeat.yml
# dest: /etc/filebeat/filebeat.yml
=======
- name: sorie pou debug
fail:
msg: "packet installe"
- name: Changement du fichier de conf
copy:
src: filebeat.yml
dest: /etc/filebeat/filebeat.yml
>>>>>>> d16ccae (maj pour elk-filebeat-cli)
- name: Configuration de filebeat
shell: filebeat modules enable system

View File

@ -1,9 +1,22 @@
## Principe du rôle elk
ELK 8.5.3
# Le rôle elk
ELK Version 8.5.3
Ce rôle permet de créer un serveur ELK pour centraliser les logs et de des métriques pour simplifier la gestion du parc informatique GSB.
Le principe de ce rôle est d'installer docker, les différentes tâches de ce rôle sont de :
Ce rôle a pour but d'installer un serveur ELK pour centraliser les logs et les métriques pour simplifier la gestion du parc informatique GSB.
Le rôle **elk** installe **docker**, les différentes tâches de ce rôle sont de :
- Vérifier si ELK est déjà installé,
- Importation un docker-compose depuis github,
- Changement la configuration pour passer en version 'basic'
- clonage du depot **devianthony** depuis github,
- Changement de la configuration pour passer en version 'basic'
- Lancement d'ELK avec docker-compose
## Lancement manuel
- depuis le répertoire **nxc** :
````shell
docker compose up setup
docker compose up -d
````

View File

@ -21,7 +21,7 @@
regexp: 'xpack.license.self_generated.type: trial'
replace: 'xpack.license.self_generated.type: basic'
- name: Execution du fichier docker-compose.yml
shell: docker compose up -d
args:
chdir: /root/elk
# - name: Execution du fichier docker-compose.yml
# shell: docker compose pull
# args:
# chdir: /root/elk

26
roles/firewalld/README.md Normal file
View File

@ -0,0 +1,26 @@
# Rôle awx
***
Rôle awx: Configuration d'un serveur AWX avec k3s.
## Tables des matières
1. [Que fait le rôle AWX ?]
2. [Connexion à l'interface WEB du serveur AWX]
**AWX** est l'application développée par **RedHat** permettant de lancer des playbooks **ansible** depuis une interface web évoluée plutôt qu'en ligne de commande. **AWX** utlise kubernetes mise en oeuvre ici avec **k3s**.
## Que fait le rôle AWX ?
Le rôle **awx** installe et configure un serveur **AWX** avec **k3s** pour cela le role:
- Installe **k3s** en spécifiant l'adresse IP ainsi que l'interface d'écoute
- Clone le dépot **Github** **awx-on-k3s**
- Procéde au déploiement du pod **awx-operator**
- Génére un certifiacat auto-signé utlisée par le serveur **AWX** en utilisant **OpenSSL**
- Edite le fichier awx.yaml afin d'y indique le nom d'hote du serveur en accord avec le nom utlisé par les certificats
- Déploie le serveur **AWX**
- Test l'accésibilité du serveur **AWX**.
### Connexions à l'interface WEB du serveur AWX ###
Une fois le role **awx** terminé il est possible de se connecter à l'interface web duserveur depuis un navigateur.
S'assurer que votre machine puisse résoudre **s-awx.gsb.lan**
- Se connecter sur : **https://s-awx.gsb.lan**
- Utlisateur: **admin** / Mot de passe: **Ansible123!**

View File

@ -0,0 +1,91 @@
---
- name: Installation de firewalld
apt:
state: present
name:
- firewalld
- name: affectation de l'interface enp0s3 a la zone external
ansible.posix.firewalld:
zone: external
interface: enp0s3
permanent: true
state: enabled
- name: affectation de l'interface enp0s8 a la zone external
ansible.posix.firewalld:
zone: internal
interface: enp0s8
permanent: true
state: enabled
- name: FirewallD rules pour la zone internal
firewalld:
zone: internal
permanent: yes
immediate: yes
service: "{{ item }}"
state: enabled
with_items:
- http
- https
- dns
- ssh
- rdp
- name: FirewallD rules pour la zone internal
firewalld:
zone: external
permanent: yes
immediate: yes
service: "{{ item }}"
state: enabled
with_items:
- ssh
- rdp
#- ansible.posix.firewalld:
# zone: internal
# service: http
# permanent: true
# state: enabled
#- ansible.posix.firewalld:
# zone: internal
# service: dns
# permanent: true
#state: enabled
#- ansible.posix.firewalld:
# zone: internal
# service: ssh
# permanent: true
# state: enabled
#- ansible.posix.firewalld:
# zone: internal
# service: rdp
#permanent: true
#state: enabled
- ansible.posix.firewalld:
zone: internal
port: 8080/tcp
permanent: true
state: enabled
- ansible.posix.firewalld:
zone: external
port: 3389/tcp
permanent: true
state: enabled
- ansible.posix.firewalld:
port_forward:
- port: 3389
proto: tcp
toaddr: "192.168.99.6"
toport: 3389
state: enabled
immediate: yes

16
roles/gotify/README.md Normal file
View File

@ -0,0 +1,16 @@
# Rôle Gotify
***
Rôle gotify pour la notification Zabbix et pas que
## Que fait le rôle gotify ?
Le rôle gotify va installer gotify en binaire, il s'agit d'une installation basic sans https.
***
## Identifiant
***
Admin
Admin
***

View File

@ -79,6 +79,10 @@
"library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so"
},
{
"library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so"
},
{
// The HA hook library should be loaded.
"library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so",
@ -179,8 +183,19 @@
// choice is 8.8.8.8, owned by Google. Using third party DNS
// service raises some privacy concerns.
"name": "domain-name-servers",
"data": "172.16.0.1"
}
"data": "172.16.0.1, 172.16.0.4"
},
{
"name": "domain-name",
"data": "gsb.lan"
},
{
"name": "domain-search",
"data": "gsb.lan"
},
],
// Some devices should get a static address. Since the .100 - .199 range is dynamic,

10
roles/lb-bd/README.md Normal file
View File

@ -0,0 +1,10 @@
# Role lb-bd
***
Rôle lb-bd pour la mise en place de la base de données du serveur WordPress.
## Tables des matières
1. Que fait le rôle lb-bd ?
## Que fait le rôle lb-bd ?
Ce rôle installe le paquet `mariadb-server` puis créé et configure la base de données nommée **wordpressdb** en ouvrant le port 3306 et en créant l'utilisateur MySQL nommé **wordpressuser** avec le mot de passe **wordpresspasswd**.

View File

@ -0,0 +1,22 @@
# Rôle lb-front
***
Rôle lb-front pour la répartition de charge des serveurs web sur WordPress avec HAProxy
## Tables des matières
1. Que fait le rôle lb-front ?
2. Ordre d'installation des serveurs.
## Que fait le rôle lb-front ?
Le rôle lb-front va installer `haproxy` pour le load balancing/la répartition de charge et va configurer le fichier `/etc/haproxy/haproxy.cfg`.
le fichier va faire du Round-Robin, un algoritme qui va équilibrer le nombre de requêtes entre s-lb-web1 et s-lb-web2.
le site web est accessibe à l'adresse <http://s-lb.gsb.adm>.
## Ordre d'installation des serveurs.
1. Le serveur s-lb avec haproxy qui va "initialiser" les sous-réseaux dans la DMZ.
2. Le serveur s-lb-bd qui va contenir la base de données WordPress utilisée par les serveurs web.
3. Le serveur s-nas qui va stocker la configuration WordPress et la partager aux serveurs web en NFS. Il va aussi utiliser la base de données sur stockée s-lb-bd.
4. Les serveurs s-web1 et s-web2 qui vont installer Apache2, PHP et afficher le serveur WordPress.

View File

@ -0,0 +1,55 @@
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend proxypublic
bind 192.168.100.10:80
default_backend fermeweb
backend fermeweb
balance roundrobin
option httpclose
option httpchk HEAD / HTTP/1.0
server s-lb-web1 192.168.101.1:80 check
server s-lb-web2 192.168.101.2:80 check
listen stats
bind *:8080
stats enable
stats uri /haproxy
stats auth admin:admin

View File

@ -0,0 +1,3 @@
---
- name: restart haproxy
service: name=haproxy state=restarted

View File

@ -0,0 +1,75 @@
- name: install haproxy
apt:
name: haproxy
state: present
- name: Creer le repertoire du certificat
file:
path: /etc/haproxy/crt
state: directory
mode: '0755'
- name: Creer le repertoire de la cle privee
file:
path: /etc/haproxy/crt/private
state: directory
mode: '0755'
- name: Generer une clee privee avec les valeurs par defaut (4096 bits, RSA)
openssl_privatekey:
path: /etc/haproxy/crt/private/haproxy.pem.key
size: 4096
type: RSA
state: present
- name: creer un certificat auto-signé
openssl_certificate:
path: /etc/haproxy/crt/private/haproxy.pem
privatekey_path: /etc/haproxy/crt/private/haproxy.pem.key
provider: selfsigned
state: present
- name: s'assurer que le certificat a les bonnes permissions
file:
path: /etc/haproxy/crt/private/haproxy.pem
owner: root
group: haproxy
mode: '0640'
- name: parametre global
blockinfile:
path: /etc/haproxy/haproxy.cfg
block: |
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
ssl-server-verify none
- name: parametre backend et fontend
blockinfile:
path: /etc/haproxy/haproxy.cfg
block: |
frontend proxypublic
bind 192.168.100.10:80
bind 192.168.100.10:443 ssl crt /etc/haproxy/crt/private/haproxy.pem
http-request redirect scheme https unless { ssl_fc }
default_backend fermeweb
backend fermeweb
balance roundrobin
option httpclose
option httpchk HEAD / HTTP/1.0
server s-lb-web1 192.168.101.1:80 check
server s-lb-web2 192.168.101.2:80 check
- name: redemarre haproxy
service:
name: haproxy
# state: restarted
enabled: yes

22
roles/lb-front/README.md Normal file
View File

@ -0,0 +1,22 @@
# Rôle lb-front
***
Rôle lb-front pour la répartition de charge des serveurs web sur WordPress avec HAProxy
## Tables des matières
1. Que fait le rôle lb-front ?
2. Ordre d'installation des serveurs.
## Que fait le rôle lb-front ?
Le rôle lb-front va installer `haproxy` pour le load balancing/la répartition de charge et va configurer le fichier `/etc/haproxy/haproxy.cfg`.
le fichier va faire du Round-Robin, un algoritme qui va équilibrer le nombre de requêtes entre s-lb-web1 et s-lb-web2.
le site web est accessibe à l'adresse <http://s-lb.gsb.adm>.
## Ordre d'installation des serveurs.
1. Le serveur s-lb avec haproxy qui va "initialiser" les sous-réseaux dans la DMZ.
2. Le serveur s-lb-bd qui va contenir la base de données WordPress utilisée par les serveurs web.
3. Le serveur s-nas qui va stocker la configuration WordPress et la partager aux serveurs web en NFS. Il va aussi utiliser la base de données sur stockée s-lb-bd.
4. Les serveurs s-web1 et s-web2 qui vont installer Apache2, PHP et afficher le serveur WordPress.

View File

@ -1,3 +1,10 @@
##Partage NFS
Ce rôle sert à installer nfs et à monter le répertoire /home/wordpress du s-nas dans /var/www/html/wordpress sur les serveurs webs.
# Rôle lb-nfs-client
***
Rôle lb-nfs-client pour l'accès au serveur NFS sur les serveurs lb-web1 et lb-web2.
## Tables des matières
1. Que fait le rôle lb-nfs-client ?
## Que fait le rôle lb-nfs-client ?
Ce rôle sert à installer le paquet `nfs-common` et à monter le répertoire /home/wordpress du s-nas dans /var/www/html/wordpress sur les serveurs webs.

View File

@ -1,10 +1,17 @@
# Role s-nas-server
## Installation de nfs-server et mise en oeuvre du partage /home/wordpress
# Role lb-nfs-server
***
Rôle lb-nfs-server pour la mise en place du partage des fichiers de configuration de WordPress.
## Tables des matières
1. Que fait le rôle lb-nfs-server ?
## Que fait le rôle lb-nfs-server ?
Ce rôle :
* installe **nfs-server**
* installe le paquet `nfs-server`
* copie le fichier de configuration **exports** pour exporter le répertoire **/home/wordpress**
* relance le service **nfs-server**
* décompresse wordpress
### Objectif
Le répertoire **/home/wordpress** est exporté par **nfs** sur le réseau **n-dmz-db**
* décompresse WordPress dans **/home/wordpress**
* relance le service `nfs-server`
* Configure l'accès de WordPress à la base de données dans le fichier `wp-config.php`
Le répertoire **/home/wordpress** est exporté par NFS dans le sous-réseau **n-dmz-db**

View File

@ -1,3 +1,12 @@
##Téléchargement et configuration de WordPress
Ce rôle télécharge wordpress depuis s-adm puis configure le fichier wp-config.php pour la situation du gsb.
# Rôle lb-web
***
Rôle lb-web pour l'affichage et l'utilisation du site web.
## Tables des matières
1. Que fait le rôle lb-web ?
## Que fait le rôle lb-web ?
Ce rôle télécharge les paquets nécessaires au fonctionnement du site web (`apache2`, `php` et `mariadb-client`) qui permetront aux serveurs web d'accerder a la base de données de WordPress.
Le site web est accessibe à l'adresse http://s-lb.gsb.adm.

View File

@ -1,8 +1,16 @@
# Installation de Nextcloud et du proxy inverse Traefik
Nextcloud et Traefik fonctionnent grâce à docker. Pour pouvoir faire fonctionner ce playbook, docker doit être installé.
## Explication de l'installation de Nextcloud
Afin de pouvoir faire fonctionner Nextcloud et Traefik, il faut mettre en place docker. Dans un premier plan, il vas donc falloir lancer le script **getall** sur **s-adm**. Ensuite dans un second temps, il faudra etre dans le fichier **/nxc** sur **s-nxc** et lancer **docker-compose.yaml**. Pour finir, il faudra ajouter l'authentification LDAP au nextcloud grace a l'AD de **s-win**.
## 1.
# <p align="center">Procédure d'installation</p>
***
## 1. Installation docker
Voir: https://gitea.lyc-lecastel.fr/gsb/gsb2024/src/branch/main/roles/docker
## 2. Fonctionnement du playbook s-nxc
Le playbook crée le dossier **nxc** à la racine de root.
@ -10,11 +18,11 @@ Les fichiers "nextcloud.yml" et "traefik.yml" y seront copiés depuis le répert
Enfin, dans le répertoire nxc, sont créés les répertoires **certs** et **config**.
## 2. Copie des fichiers
### 2.1 Copie des fichiers
Le playbook copie les fichiers placés dans "files" et les placer dans les bons répertoires.
Le playbook copie les fichiers placés dans "files" et les places dans les bons répertoires.
## 3. Génération du certificat
### 2.2 Génération du certificat
Le playbook crée un certificat **x509** grâce à **mkcert**, il s'agit d'une solution permettant de créer des certificats auto-signés. Pour cela, il télécharge **mkcert** sur **s-adm** (utiliser le script **getall**).
@ -25,7 +33,7 @@ Pour créer le certificat, le playbook exécute les commandes (lancé depuis nxc
/usr/local/bin/mkcert -install # Installe mkcert
/usr/local/bin/mkcert -key-file key.pem -cert-file cert.pem "hôte.domaine.local" "*.domaine.local" #Crée le certificat le DNS spécifié
```
## 4. Lancement
## 3. Lancement
Le playbook lance les fichiers "docker-compose" à savoir : nextcloud.yml et traefik.yml qui démarrent les deux piles **docker**.
@ -37,22 +45,28 @@ ATTENTION : Après avoir relancé la VM, executez le script "nxc-start.sh" afin
Une fois le script terminé, le site est disponible ici : https://s-nxc.gsb.lan
## 5. Ajout authentification LDAP
## 4. Ajout authentification LDAP
Pour ajouter l'authentification LDAP au Nextcloud, il faut :
* Une fois l'installation de Nextcloud terminé, cliquez sur le profil et Application
Pour ajouter l'authentification LDAP au Nextcloud, depuis **n-user** il faut :
* Une fois l'installation de Nextcloud terminé, cliquez sur le profil et "Application"
* Dans vos applications, descendre et activer "LDAP user and group backend"
* Puis cliquer sur le profil, puis Paramètres d'administration et dans Administration cliquer sur Intégration LDAP/AD
* Puis cliquer sur le profil, puis "Paramètres d'administration" et dans "Administration" cliquer sur "Intégration LDAP/AD"
* Une fois sur la page d'intégration LDAP/AD :
* Dans Hôte mettre :
> ldap://s-win.gsb.lan
* Cliquer sur Détecter le port (normalement le port 389 apparait)
> **ldap://s-win.gsb.lan**
* Cliquer sur "Détecter le port" (normalement le port 389 apparait)
* Dans DN Utilisateur mettre :
> CN=nextcloud,CN=Users,DC=GSB,DC=LAN
> **CN=nextcloud,CN=Users,DC=gsb,DC=lan**
* Mot de passe :
> Azerty1+
* Et dans Un DN de base par ligne :
> DC=GSB,DC=LAN
* Après la configuration passe OK
* Une fois la configuration finie, cliquer 3 fois sur continuer
* Une fois arrivé sur Groupes, vous pouvez vous déconnecter du compte Admin et vous connecter avec un compte qui est dans l'AD.
> **Azerty1+**
* Et dans "Un DN de base par ligne" :
> **DC=gsb,DC=lan**
* Cliquer sur "Détecter le DN de base" (normalement il apparaitra automatiquement)
* Après la configuration réaliser, cliquer sur "Continuer", puis cliquer 3 fois sur continuer
* Une fois arrivé sur "Groupes", vous pouvez vous déconnecter du compte Admin et vous connecter avec un compte qui est dans l'AD.
## Contributeurs
- LG
- CH

View File

@ -0,0 +1,19 @@
Ce script Bash a pour objectif d'automatiser le processus de sauvegarde du serveur NextCloud, qui est exécuté dans un environnement Docker.
## 1. Activation du mode maintenance :
- La première commande Docker est utilisée pour mettre le serveur NextCloud en mode maintenance. Cette mesure préventive garantit qu'aucune modification n'est apportée pendant la sauvegarde, assurant ainsi la cohérence des données.
## 2. Copie des fichiers de sauvegarde :
- La commande `cd /root/nxc` change le répertoire de travail vers `/root/nxc`.
- Ensuite, la commande `rsync -Aavx nextcloud/ nextcloud-dirbkp/` effectue une copie récursive des fichiers du dossier `nextcloud/` vers `nextcloud-dirbkp/`. Ceci crée une copie locale des fichiers de NextCloud à des fins de sauvegarde.
## 3. Sauvegarde de la base de données MySQL/MariaDB :
- La ligne suivante utilise `docker compose exec` pour exécuter la commande `mysqldump` dans le conteneur de la base de données. Cela génère une sauvegarde de la base de données NextCloud qui est enregistrée dans le fichier `nextcloud-sqlbkp.bak`.
## 4. Désactivation du mode maintenance :
- Après la sauvegarde, une autre commande Docker est utilisée pour désactiver le mode maintenance de NextCloud, permettant ainsi la reprise normale des opérations.
## 5. Création d'une archive compressée :
- Enfin, la dernière ligne crée une archive compressée `nxc.tgz` qui regroupe la sauvegarde de la base de données (`nextcloud-sqlbkp.bak`) et la copie locale des fichiers NextCloud (`nextcloud-dirbkp/`).
Ce script simplifie et automatise le processus de sauvegarde de NextCloud en mettant en place la mise en mode maintenance, la copie des fichiers locaux, la sauvegarde de la base de données, la désactivation du mode maintenance, et la création d'une archive compressée consolidant l'ensemble des éléments de sauvegarde.

View File

@ -18,12 +18,5 @@ docker compose exec -u www-data app php occ maintenance:mode --off
# création d'une archive
tar cvfz nxc.tgz nextcloud-sqlbkp.bak nextcloud-dirbkp
# envoie sur s-backup
BACKUP=/home/backup/s-nxc
# Préparation des dossiers qui vont accueillir les données à sauvegarder (-e lance le répertoire si il existe)
[[ -e "${BACKUP}" ]] || mkdir -p "${BACKUP}"
# Sauvegarde du fichier nxc.tgz vers la machine s-backup
scp root@s-nxc:/root/nxc/nxc.tgz "${BACKUP}/"

View File

@ -0,0 +1,10 @@
#!/bin/bash
# envoie sur s-backup
BACKUP=/home/backup/s-nxc
# Préparation des dossiers qui vont accueillir les données à sauvegarder (-e lance le répertoire si il existe)
[[ -e "${BACKUP}" ]] || mkdir -p "${BACKUP}"
# Sauvegarde du fichier nxc.tgz vers la machine s-backup
scp -i ~/.ssh/id_rsa_sbackup root@s-nxc.gsb.adm:/root/nxc/nxc.tgz "${BACKUP}/"

View File

@ -14,6 +14,14 @@
group: root
mode: '0755'
- name: copie script backupnxc dans /usr/local/bin
copy:
src: backupnxc.sh
dest: /usr/local/bin
owner: root
group: root
mode: '0755'
- name: crontab backupsmb ( commentee par defaut )
cron:
name: backupsmb

View File

@ -1 +1,17 @@
###Génération de clé publique et privée###
Ce script génère et distribue une paire de clés SSH (clé privée et clé publique).
## 1. Génération de la clé privée :
- Cette étape crée une clé privée de type RSA destinée à être utilisée pour des opérations liées à s-backup.
- La clé privée est enregistrée dans le chemin spécifié (`/root/id_rsa_sbackup`).
- L'attribut `state: present` garantit que la clé privée est générée si elle n'existe pas déjà.
## 2. Copie de la clé publique dans gsbstore :
- Cette étape copie la clé publique associée à la clé privée générée précédemment (`/root/id_rsa_sbackup.pub`).
- La clé publique est déplacée vers un répertoire spécifié (`/var/www/html/gsbstore`) sur la machine distante.
- Les permissions de la clé publique sont définies avec `mode: 0644`, et `remote_src: yes` indique que la source du fichier est sur la machine distante.
## 3. Copie de la clé privée dans gsbstore :
- Cette étape copie la clé privée générée dans le même répertoire que la clé publique sur la machine distante (`/var/www/html/gsbstore`).
- Les permissions de la clé privée sont également définies avec `mode: 0644`, et `remote_src: yes` indique que la source du fichier est sur la machine distante.
Ce script automatise la création d'une paire de clés SSH et déplace ces clés vers un emplacement spécifique (`/var/www/html/gsbstore`) sur une machine distante. Ces clés pourraient être utilisées dans des processus de sauvegarde sécurisés, garantissant l'authentification sécurisée lors des opérations liées à s-backup.

View File

@ -16,5 +16,5 @@
copy:
src: /root/id_rsa_sbackup
dest: /var/www/html/gsbstore
mode: 0600
mode: 0644
remote_src: yes

View File

@ -0,0 +1,9 @@
# récupération d'une clé publique
Ce script permet de récupérer un clé publique créer depuis la machine s-adm:
1. Création du répertoire .ssh :
- Il crée le répertoire `~/.ssh` avec des permissions strictes (0700) pour l'utilisateur.
2. Récupération de la clé privée :
- Il télécharge une clé privée depuis l'URL spécifiée (`http://s-adm.gsb.adm/gsbstore/id_rsa_sbackup`) et la place dans le répertoire `~/.ssh` avec le nom `id_rsa_sbackup`.
- La clé privée est configurée avec des permissions strictes (0600) pour garantir la sécurité.

View File

@ -3,10 +3,11 @@
file:
path: ~/.ssh
state: directory
mode: 0700
- name: recuperation de la cle privee generee par s-adm
get_url:
url: http://s-adm.gsb.adm/gsbstore/id_rsa_sbackup
dest: /root/.ssh/id_rsa_sbackup
mode: 0644
mode: 0600

View File

@ -0,0 +1,9 @@
# script de récupération de la clé publique générer par s-adm
Ce script Ansible utilise le module `ansible.posix.authorized_key` pour gérer les clés SSH autorisées sur un système conforme aux normes POSIX. Plus précisément, la tâche vise à garantir la présence d'une clé publique spécifiée dans le fichier des clés autorisées pour l'utilisateur `root`.
- `user: root` : Indique que la clé SSH est associée à l'utilisateur root.
- `state: present` : Spécifie que la clé doit être présente dans le fichier des clés autorisées. Si la clé n'existe pas, elle sera ajoutée.
- `key: http://s-adm.gsb.adm/gsbstore/id_rsa_sbackup.pub` : Indique l'URL à partir de laquelle la clé publique (`id_rsa_sbackup.pub`) doit être récupérée. Ansible télécharge la clé publique depuis cette URL et l'ajoute au fichier des clés autorisées pour l'utilisateur root.
Ce script Ansible assure que la clé publique spécifiée est présente dans le fichier des clés autorisées pour l'utilisateur root sur un système compatible POSIX, en récupérant la clé publique à partir de l'URL fournie.

View File

@ -6,9 +6,21 @@
mode: 0700
state: directory
- name: Copie cle publiique depuis s-adm
- name: Copie cle publique depuis s-adm
ansible.posix.authorized_key:
user: root
state: present
key: http://s-adm.gsb.adm/id_rsa.pub
- name: Creation user gsbadm
ansible.builtin.user:
name: gsbadm
groups: sudo
append: yes
shell: /bin/bash
- name: Copie cle publique oour gsbadm depuis s-adm
ansible.posix.authorized_key:
user: gsbadm
state: present
key: http://s-adm.gsb.adm/id_rsa.pub

View File

@ -17,7 +17,7 @@ Attendre la fin de l'installation. Ensuite lancer le scipt r-vp1-post.sh
### 🛠️ Lancer le script r-vp1-post.sh
```bash
cd /tools/ansible/gsb2023/Scripts
cd tools/ansible/gsb2024/scripts
```
```bash
bash r-vp1-post.sh
@ -30,7 +30,7 @@ Puis lancer le script r-vp2-post.sh pour récuperer le fichier de configuration
### 🛠️ Lancer le script
```bash
cd /tools/ansible/gsb2023/Scripts
cd tools/ansible/gsb2024/scripts
```
```bash
bash r-vp2-post.sh
@ -44,4 +44,4 @@ reboot
Veuillez maintenant vous rendre dans le dossier du role ferm :
*gsb2024/roles/fw-ferm*
*Modification : jm*
*Modification : jm*

View File

@ -11,7 +11,7 @@ Rôle du Zabbix client pour la supervision des différentes machines en active
Il permet de configurer les agents zabbix en active sur le serveur.
### Installation et configuration de Zabbix-agent
Le rôle Zabbix-cli va installer Zabbix-agent sur les serveurs Debian. Vous pouvez modifier les paramètres dans le fichier 'defaults'. Il s'agit d'une configuration en mode actif, ce qui signifie que du côté du serveur, il suffit de définir les hôtes avec leur nom, le type d'OS, et pour notre cas, préciser qu'il s'agit d'une machine virtuelle sur le serveur Zabbix.
Le rôle Zabbix-cli installe Zabbix-agent sur Debian. Les paramètres sont modifiable dans le fichier 'defaults'. Il s'agit d'une configuration en mode actif(remonte lui seule au serveur zabbix), ce qui signifie que du côté du serveur, il suffit de définir les hôtes avec leur nom, le type d'OS, et pour notre cas, préciser qu'il s'agit d'une machine virtuelle sur le serveur Zabbix.(Le script hostcreate.sh remonte automatiquement les machines uniquement si la clée d'api est valide)
### Partie Windows !
Le fonctionnement de Zabbix-agent n'est pas différent de celui sur Linux. Cependant, lorsque vous êtes sur le site de Zabbix pour installer l'agent, veillez à choisir la version classique de Zabbix-agent plutôt que la version 2, car elle requiert plus de ressources pour une faible supervision supplémentaire.

View File

@ -1,3 +1,3 @@
SERVER: "127.0.0.1"
SERVERACTIVE: "192.168.99.8"
TOKENAPI: "f72473b7e5402a5247773e456f3709dcdd5e41792360108fc3451bbfeed8eafe"
TOKENAPI: "a44e2a4977d61a869437739cb6086ae42f4b9937fbb96aed24bbad028469a1cf"

View File

@ -1,9 +1,9 @@
- name: Intallation paquet zabbix agent
- name: Installation paquet zabbix agent
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: Intallation paquet zabbix agent suite
- name: Installation paquet zabbix agent suite
apt:
deb: "/tmp/zabbix-release_6.4-1+debian12_all.deb"
state: present
@ -12,7 +12,7 @@
apt:
update_cache: yes
- name: Intallation Zabbix agent
- name: Installation Zabbix agent
apt:
name: zabbix-agent
state: present
@ -33,6 +33,6 @@
src: hostcreate.sh.j2
dest: /tmp/hostcreate.sh
#- name: lancement script hostcreate
#command: bash /tmp/hostcreate.sh
- name: lancement script hostcreate
command: bash /tmp/hostcreate.sh

View File

@ -10,6 +10,12 @@ Rôle zabbix-srv pour la supervision des différentes machines
Le rôle zabbix-srv va installer `apache2` pour le serveur web, `zabbix-server` pour la supervision et `zabbix-agent` pour gérer les clients, **Zabbix** qui sera notre outil de supervision.
Lors de l'éxecution du playbook, les identifiants de la BDD sont crées avec le nom d'utilisateur "zabbix" et le mot de passe "password".
La base de données est importée depuis une sauvegarde existante sur s-adm qui contient les clés API pour la notification gotify.
Lors de l'éxecution du playbook, les identifiants de la BDD sont crées avec le nom d'utilisateur "zabbix" et le mot de passe "password" pour se connecter a la BD importée.
Pour l'identifiant de Zabbix, c'est "Admin" et le mot de passe "zabbix", à l'adresse <http://s-mon/zabbix>.
## Notification Zabbix avec gotify
Ce rôle installe la base pour pouvoir faire des notification avec gotify, la base importée est pre-configurer pas besoin de rajouter le media gotify. Le serveur gotify est sur s-backup et est accessible via s-backup.gsb.adm:8008.

View File

@ -0,0 +1,7 @@
#!/bin/bash
ALERTSENDTO=$1
ALERTSUBJECT=$2
ALERTMESSAGE=$3
curl -X POST "http://s-backup.gsb.adm:8008/message?token=$ALERTSENDTO" -F "title=$ALERTSUBJECT" -F "message=$ALERTMESSAGE" -F "priority=5" > /dev/null 2>&1

View File

@ -29,42 +29,60 @@
name: mariadb
state: started
- name: 6. Modifier la variable trust function creators pour importer la base données
- name: 6. 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: 7. Modifier la variable trust function creators pour importer la base données
community.mysql.mysql_variables:
variable: log_bin_trust_function_creators
value: 1
mode: global
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 7. Importer la base de données
- name: 8. Récupérer la base de données
get_url:
url: http://s-adm.gsb.adm/gsbstore/zabbix.sql.gz
dest: /tmp
- name: 9. Importer la base de données
community.mysql.mysql_db:
state: import
name: zabbix
encoding: utf8mb4
target: http://s-adm.gsb..adm/gsbstore/zabbix.sql.gz
target: /tmp/zabbix.sql.gz
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 8. Remettre a zero la variable trust function creators
- name: 10. Remettre a zero la variable trust function creators
community.mysql.mysql_variables:
variable: log_bin_trust_function_creators
value: 0
mode: global
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: 9. Lancer le service zabbix-server
- name: 11. Lancer le service zabbix-server
service:
name: zabbix-server
state: restarted
enabled: yes
- name: 10. Lancer le service zabbix-agent
- name: 12. Lancer le service zabbix-agent
service:
name: zabbix-agent
state: restarted
enabled: yes
- name: 11. Lancer le service apache2
- name: 13. Lancer le service apache2
service:
name: apache2
state: restarted
enabled: yes
- name: 14. Gotify
copy:
src: gotify.sh
dest: /usr/lib/zabbix/alertscripts

View File

@ -1,15 +1,18 @@
---
- hosts: localhost
connection: local
become: yes
roles:
- base
- s-ssh
#- zabbix-cli
- dnsmasq
- squid
- ssh-backup-key-gen
# awx-user
# - local-store
- zabbix-cli
## - syslog-cli
- post
# - goss

11
s-awx-post.yml Normal file
View File

@ -0,0 +1,11 @@
---
- hosts: localhost
connection: local
vars:
awx_host: "s-awx.gsb.lan"
awx_dir: "/root/tools/awx-on-k3s"
awx_ip: "172.16.0.22"
awx_if: "enp0s8"
roles:
- awx

13
s-awx.yml Normal file
View File

@ -0,0 +1,13 @@
---
- hosts: localhost
connection: local
vars:
roles:
- base
- goss
- ssh-cli
- awx-user-cli
#- awx
# - zabbix-cli
- journald-snd
- post

View File

@ -1,10 +1,11 @@
---
- hosts: localhost
connection: local
become: yes
vars:
stork_db_user: "stork-server"
stork_db_passwd: "Azerty1+"
stork_db_name: "stork"
stork_db_name: "stork"
roles:
- base

View File

@ -1,14 +1,18 @@
---
- hosts: localhost
connection: local
become: yes
# include: config.yml
roles:
- base
- zabbix-cli
- goss
#- zabbix-cli
- goss
- dns-master
- webautoconf
# - elk-filebeat-cli
- journald-snd
- ssh-cli
#- awx-user-cli
- post

View File

@ -1,7 +1,7 @@
---
- hosts: localhost
connection: local
become: yes
#vars:
#glpi_version: "10.0.11"
#glpi_dir: "/var/www/html/glpi"

View File

@ -17,8 +17,8 @@
- goss
- ssh-cli
- kea
- stork-agent
- zabbix-cli
- awx-user-cli
#- stork-agent
# - zabbix-cli
- journald-snd
- snmp-agent
- post

View File

@ -5,7 +5,8 @@
roles:
- base
- goss
- lb-front
#- lb-front
- lb-front-ssl
#- zabbix-cli
- ssh-cli
- post

View File

@ -1,7 +1,8 @@
---
- hosts: localhost
connection: local
become: yes
roles:
- base
- goss

View File

@ -1,19 +1,32 @@
#!/bin/bash
mkvmrelease="v1.3.2"
mkvmrelease="v1.3.3"
ovarelease="2023c"
ovafogrelease="2024a"
ovarelease="2024b"
ovafogrelease="2024b"
#ovafile="$HOME/Téléchargements/debian-bullseye-gsb-${ovarelease}.ova"
ovafile="$HOME/Téléchargements/debian-bookworm-gsb-${ovarelease}.ova"
ovafilefog="$HOME/Téléchargements/debian-bullseye-gsb-${ovafogrelease}.ova"
startmode=0
deletemode=0
declare -A vmMem
vmMem[r-int]=512
vmMem[r-ext]=512
vmMem[s-nas]=512
vmMem[s-infra]=768
vmMem[s-backup]=768
vmMem[s-elk]=3072
vmMem[s-awx]=4096
declare -A vmCpus
vmCpus[s-peertube]=2
vmCpus[s-awx]=2
usage () {
echo "$0 - version ${mkvmrelease} - Ova version ${ovarelease}"
echo "$0 : creation VM et parametrage interfaces"
echo "usage : $0 [-r] [-s] <s-adm|s-infra|r-int|r-ext|s-proxy|s-mon|s-appli|s-backup|s-itil|s-ncx|s-fog>"
echo "usage : $0 [-r] [-s] <s-adm|s-infra|r-int|r-ext|s-proxy|s-mon|s-appli|s-backup|s-itil|s-nxc|s-fog>"
echo " option -r : efface VM existante avant creation nouvelle"
echo " option -s : start VM apres creation"
exit 1
@ -32,7 +45,15 @@ create_vm () {
if [[ "${deletemode}" = 1 ]] ; then
VBoxManage unregistervm --delete "${nom}"
fi
vboxmanage import "${nomova}" --vsys 0 --vmname "${nom}"
mem=1024
cpus=1
if [[ -v vmMem[${nom}] ]]; then
mem=${vmMem[${nom}]}
fi
if [[ -v vmCpus[${nom}] ]]; then
cpus=${vmCpus[${nom}]}
fi
vboxmanage import "${nomova}" --vsys 0 --vmname "${nom}" --memory "${mem}" --cpus "${cpus}"
}
setif () {
@ -132,6 +153,8 @@ elif [[ "${vm}" == "r-vp2" ]] ; then
./addint.r-vp2
elif [[ "${vm}" == "s-agence" ]] ; then
create_if "${vm}" "n-adm" "n-agence"
elif [[ "${vm}" == "s-awx" ]] ; then
create_if "${vm}" "n-adm" "n-infra"
else
echo "$0 : vm ${vm} non prevue "
exit 2

View File

@ -4,19 +4,40 @@
#mkvm pour toutes les vms
$mkvmrelease="v1.3.1"
$ovarelease="2023c"
$ovafogrelease="2024a"
$ovarelease="2024b"
$ovafogrelease="2024b"
$ovafile="$HOME\Downloads\debian-bookworm-gsb-${ovarelease}.ova"
$ovafilefog="$HOME\Downloads\debian-bullseye-gsb-${ovafogrelease}.ova"
$vboxmanage="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
$deletemode=0
$vmMem = @{
"r-int" = "512"
"r-ext" = "512"
"s-nas" = "512"
"s-infra" = "768"
"s-backup" = "768"
"s-elk" = "3072"
"s-awx" = "4096"
"s-peertube" = "4096"
}
$vmCpus = @{
"s-awx" = "2"
"s-peertube" = "2"
}
#FONCTIONS
function create_vm{ param([string]$nomvm)
#Importation depuis l'ova
& "$vboxmanage" import "$ovafile" --vsys 0 --vmname "$nomvm"
Write-Host "Machine $nomvm importée"
if (($vmMem.ContainsKey($nomvm)) -and ($vmCpus.ContainsKey($nomvm))) {
& "$vboxmanage" import "$ovafile" --vsys 0 --vmname "$nomvm" --memory $vmMem[$nomvm] --cpus $vmCpus[$nomvm]
Write-Host "Machine $nomvm importée"
} else {
#Importation depuis l'ova
& "$vboxmanage" import "$ovafile" --vsys 0 --vmname "$nomvm"
Write-Host "Machine $nomvm importée"
}
}
function create_if{ param([string]$nomvm, [string]$nic, [int]$rang, [string]$reseau)
@ -118,6 +139,22 @@ elseif ($args[0] -eq "s-kea2") {
create_if $args[0] "int" 3 "n-user"
}
elseif ($args[0] -eq "s-awx") {
create_vm $args[0]
create_if $args[0] "int" 1 "n-adm"
create_if $args[0] "int" 2 "n-infra"
}
elseif ($args[0] -eq "s-peertube") {
create_vm $args[0]
create_if $args[0] "int" 1 "n-adm"
create_if $args[0] "int" 2 "n-infra"
}
elseif ($args[0] -eq "s-agence") {
create_vm $args[0]

View File

@ -1,4 +1,4 @@
!/bin/bash
#!/bin/bash
#Ancien scipt 2023
#stoper le fw

View File

@ -9,11 +9,11 @@
- Une fois l'installation du serveur Windows 2019, démarrer la VM Windows Server.
- Faite l'installation de windows server. Vous pouvez suivre de l'étape 3 a l'étape 12 (Lien : https://www.infonovice.fr/guide-dinstallation-de-windows-server-2019-avec-une-interface-graphique/)
- Renommer votre nom de machine du serveur windows depuis les parametre de "Informations Systèmes" en **s-win**. Puis redémarrer la machine.
- Modifier la premiere carte de l'IP du serveur windows depuis le panneau de configuration en "192.168.99.6" avec la passerelle en "192.168.99.99 et la seconde en "172.16.0.6" et ajouter la passerelle par defaut en "172.16.0.254".
- Eteindre votre VM et ajouter une carte en pont dans les parametres reseaux de la VM. Allumer votre VM et installer git depuis le site officiel, il faudra sans doute activer certaines options dans les parametres d'internet explorer comme "JavaScript" ou encore l'option de Téléchargement (lien source: https://git-scm.com/download/win et https://support.microsoft.com/fr-fr/topic/procédure-d-activation-de-javascript-dans-windows-88d27b37-6484-7fc0-17df-872f65168279).
- Modifier la premiere carte de l'IP du serveur windows depuis le panneau de configuration en "192.168.99.6" avec la passerelle en "192.168.99.99" et la seconde en "172.16.0.6" et ajouter la passerelle par defaut en "172.16.0.254".
- Eteindre votre VM et ajouter une carte en pont dans les parametres reseaux de la VM. Allumer votre VM et installer git depuis le site officiel, il faudra sans doute activer certaines options dans les parametres d'internet explorer comme "JavaScript" ou encore l'option de "Téléchargement" et si besoin rajouter le site du **gitea** du lycée etant comme site sure (lien source: https://git-scm.com/download/win et https://support.microsoft.com/fr-fr/topic/procédure-d-activation-de-javascript-dans-windows-88d27b37-6484-7fc0-17df-872f65168279).
- Installer Serveur DNS et Services AD DS. Pour vous aider, suivre le TP de "Installation du service" a "Installation serveur DNS" (lien source: https://sio.lyc-lecastel.fr/doku.php?id=promo_2024:serveur_windows_2019-installation_ad)
- Créer une nouvelle fôret pour le domaine **gsb.lan**.
- Configurer la zone inverse du DNS et l'alimenter avec les enregistrements souhaités (A et PTR pour **s-win**, **s-itil**, **r-int** et **s-infra*. Vous pouvez vous aidez de ce tutoriel (https://www.it-connect.fr/dns-sous-windows-server-2022-comment-configurer-une-zone-de-recherche-inversee/).
- Configurer la zone inverse du DNS et l'alimenter avec les enregistrements souhaités (A et PTR pour **s-win**, **s-itil**, **r-int** et **s-infra**. Vous pouvez vous aidez de ce tutoriel (https://www.it-connect.fr/dns-sous-windows-server-2022-comment-configurer-une-zone-de-recherche-inversee/).
## Création des dossiers partagés et des utilisateur