Ajout du playbook Ansible pour Wireguard, du script bash, et des
fichiers de configuration.
This commit is contained in:
parent
5a11bfbd7d
commit
761184054f
10
README.md
10
README.md
@ -1,7 +1,7 @@
|
||||
# sdis29-1
|
||||
## Dépôt Git des programmes sources - SDIS 29.
|
||||
|
||||
Version: v.0.0.2a-ge
|
||||
Version: v.0.0.2b-ge
|
||||
|
||||
### Création initiale des serveurs :
|
||||
|
||||
@ -43,10 +43,16 @@ Version: v.0.0.2a-ge
|
||||
* Import du fichier `sdis29.sql` sur MariaDB sur la machine **ap31-test**.
|
||||
* Une fois fait, base de données disponible sur la machine et visible sur phpmyadmin une fois les privilèges requis donnés au compte.
|
||||
|
||||
### Création de playbooks Ansible pour **ap31-prod** et **ap31-test**
|
||||
### Création de playbooks Ansible pour **ap31-prod** et **ap31-test** :
|
||||
|
||||
* Création du *playbook* `apbase.yml` qui prépare les machines **ap31-prod** et **ap31-test** en installant les paquets nécessaires, en configurant le proxy pour *APT*, et en définissant la *timezone*.
|
||||
* Création du *playbook* `apdb.yml` qui installe les dépendances utilisées dans le *playbook*, puis se charge de créer la BDD, un utilisateur, et qui peut être exécuté plusieurs fois sans soucis.
|
||||
* Exécution des deux *playbooks* et résultats corrects, sans erreurs. Les *playbooks* `apbase.yml` et `apdb.yml` sont terminés.
|
||||
* Création du *playbook* `apdbdump.yml` qui récupère le dump de la BDD une fois celui-ci créé.
|
||||
* Exécution du *playbook* et résultats corrects, sans erreurs. Le *playbook* est terminé.
|
||||
|
||||
### Établissement d'un tunnel VPN entre les machines **ap31-mon**, **ap31-prod** et **ap31-test** :
|
||||
|
||||
* Création d'un *playbook* `wg.yml` qui se charge d'installer Wireguard et ses outils sur les trois machines, puis qui exécute un script modifié pour générer les clés et les fichiers de configuration, avant de les mettre au bon endroit.
|
||||
* Une fois cela fait, et le tunnel fonctionnel, la centralisation des logs peut se faire via le tunnel Wireguard. Les IPs des fichiers de configuration sont donc modifiées pour fonctionner.
|
||||
* Pour plus de détails, se rendre dans le dossier `ansible`, puis le répertoire `wireguard`.
|
||||
|
@ -1,11 +1,16 @@
|
||||
# Ansible
|
||||
Dans ce répertoire se situent les *playbooks* Ansible.
|
||||
|
||||
## apbase.yml
|
||||
## Dossier Wireguard :
|
||||
Dans le dossier se trouvent le *playbook* ainsi que les fichiers de configuration.
|
||||
|
||||
## Playbook de déploiement des **ap31-prod** et **ap31-test** :
|
||||
|
||||
### apbase.yml :
|
||||
Ce *playbook* se charge de mettre à jour les paquets, configurer APT pour passer par le proxy, définit une *timezone* correcte, et se charge d'installer les paquets sur les deux machines.
|
||||
|
||||
## apdb.yml
|
||||
### apdb.yml :
|
||||
Ce *playbook* se charge d'installer un module crucial sur la machine **ap31-test**, puis créé une base de données vide, un utilisateur avec l'accès total sur la BDD, puis importe le fichier .sql de base pour rendre la BDD utilisable.
|
||||
|
||||
## apdbdump.yml
|
||||
### apdbdump.yml :
|
||||
Ce *playbook* se charge de créer un dump de la BDD avant de l'envoyer sur la machine qui exécute le *playbook* Ansible.
|
||||
|
7
ansible/wireguard/README.md
Normal file
7
ansible/wireguard/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Ansible pour Wireguard
|
||||
|
||||
## Description du playbook :
|
||||
|
||||
Ce *playbook* se charge d'installer les outils Wireguard et le paquet Wireguard sur chacune des machines, avant de copier le script pour générer les fichiers de configuration sur la machine **ap31-mon**, puis exécute le script, avant de récupérer chacun des trois fichiers de configuration pour les copier sur **ap31-ans**.
|
||||
|
||||
Ensuite, le *playbook* se charge de copier les fichiers de configuration à chaque machine de manière individuelle sans possibilité d'erreur, avant d'activer le service Wireguard au démarrage, et de le relancer.
|
6
ansible/wireguard/hosts
Normal file
6
ansible/wireguard/hosts
Normal file
@ -0,0 +1,6 @@
|
||||
[wg]
|
||||
ap31-prod
|
||||
ap31-test
|
||||
ap31-mon
|
||||
[wg_srv]
|
||||
ap31-mon
|
80
ansible/wireguard/mkwgconf-p2p.sh
Normal file
80
ansible/wireguard/mkwgconf-p2p.sh
Normal file
@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
set -u
|
||||
set -e
|
||||
|
||||
AddressAwg=10.0.0.1/32 # Adresse VPN Wireguard MON
|
||||
EndpointA=172.16.0.102 # Adresse extremite MON
|
||||
PortA=51820 # Port ecoute extremite MON
|
||||
AddressBwg=10.0.0.2/32 # Adresse VPN Wireguard PROD
|
||||
EndpointB=172.16.0.100 # Adresse extremite PROD
|
||||
PortB=51820 # Port ecoute extremite PROD
|
||||
AddressCwg=10.0.0.3/32 # Adresse VPN Wireguard TEST
|
||||
EndpointC=172.16.0.101 # Adresse extremite TEST
|
||||
PortC=51820 # Port ecoute extremite TEST
|
||||
|
||||
umask 077 ;
|
||||
wg genkey > endpoint-a.key
|
||||
wg pubkey < endpoint-a.key > endpoint-a.pub
|
||||
|
||||
wg genkey > endpoint-b.key
|
||||
wg pubkey < endpoint-b.key > endpoint-b.pub
|
||||
|
||||
wg genkey > endpoint-c.key
|
||||
wg pubkey < endpoint-c.key > endpoint-c.pub
|
||||
|
||||
PKA=$(cat endpoint-a.key)
|
||||
pKA=$(cat endpoint-a.pub)
|
||||
PKB=$(cat endpoint-b.key)
|
||||
pKB=$(cat endpoint-b.pub)
|
||||
PKC=$(cat endpoint-c.key)
|
||||
pKC=$(cat endpoint-c.pub)
|
||||
|
||||
cat <<FINI > wg0-mon.conf
|
||||
# local settings for ap31-mon
|
||||
[Interface]
|
||||
PrivateKey = $PKA
|
||||
Address = $AddressAwg
|
||||
ListenPort = $PortA
|
||||
|
||||
# remote settings for ap31-prod
|
||||
[Peer]
|
||||
PublicKey = $pKB
|
||||
Endpoint = ${EndpointB}:$PortB
|
||||
AllowedIPs = $AddressBwg
|
||||
|
||||
# remote settings for ap31-test
|
||||
[Peer]
|
||||
PublicKey= $pKC
|
||||
Endpoint = ${EndpointC}:$PortC
|
||||
AllowedIPs = $AddressCwg
|
||||
FINI
|
||||
|
||||
|
||||
cat <<FINI > wg0-prod.conf
|
||||
# local settings for ap31-prod
|
||||
[Interface]
|
||||
PrivateKey = $PKB
|
||||
Address = $AddressBwg
|
||||
ListenPort = $PortB
|
||||
|
||||
# remote settings for ap31-mon
|
||||
[Peer]
|
||||
PublicKey = $pKA
|
||||
Endpoint = ${EndpointA}:$PortA
|
||||
AllowedIPs = $AddressAwg
|
||||
FINI
|
||||
|
||||
|
||||
cat <<FINI > wg0-test.conf
|
||||
# local settings for ap31-test
|
||||
[Interface]
|
||||
PrivateKey = $PKC
|
||||
Address = $AddressCwg
|
||||
ListenPort = $PortC
|
||||
|
||||
# remote settings for ap31-mon
|
||||
[Peer]
|
||||
PublicKey = $pKA
|
||||
Endpoint = ${EndpointA}:$PortA
|
||||
AllowedIPs = $AddressAwg
|
||||
FINI
|
74
ansible/wireguard/wg.yml
Normal file
74
ansible/wireguard/wg.yml
Normal file
@ -0,0 +1,74 @@
|
||||
# wg.yml
|
||||
---
|
||||
- hosts: wg
|
||||
become: true
|
||||
tasks:
|
||||
- name: 1. Installe le paquet Wireguard.
|
||||
apt:
|
||||
name: wireguard
|
||||
state: present
|
||||
|
||||
- name: 2. Installe les outils Wireguard.
|
||||
apt:
|
||||
name: wireguard-tools
|
||||
state: present
|
||||
|
||||
- hosts: wg_srv
|
||||
become: true
|
||||
tasks:
|
||||
- name: 3. Envoie le script Wireguard.
|
||||
copy:
|
||||
src: mkwgconf-p2p.sh
|
||||
dest: mkwgconf-p2p.sh
|
||||
|
||||
- name: 4. Exécute le script Wireguard.
|
||||
command: bash mkwgconf-p2p.sh
|
||||
|
||||
- name: 5. Copie le fichier de configuration Wireguard C sur cette machine.
|
||||
ansible.builtin.fetch:
|
||||
src: wg0-mon.conf
|
||||
dest: wg0-mon.conf
|
||||
flat: yes
|
||||
|
||||
- name: 6. Récupère le fichier de conf A.
|
||||
ansible.builtin.fetch:
|
||||
src: wg0-prod.conf
|
||||
dest: wg0-prod.conf
|
||||
flat: yes
|
||||
|
||||
- name: 7. Récupère le fichier de conf B.
|
||||
ansible.builtin.fetch:
|
||||
src: wg0-test.conf
|
||||
dest: wg0-test.conf
|
||||
flat: yes
|
||||
|
||||
- hosts: wg
|
||||
become: true
|
||||
tasks:
|
||||
- name: 8. Envoie le fichier de conf A vers la machine prod.
|
||||
copy:
|
||||
src: wg0-prod.conf
|
||||
dest: /etc/wireguard/wg0.conf
|
||||
when: ansible_hostname == "ap31-prod"
|
||||
|
||||
- name: 9. Envoie le fichier de conf B vers la machine test.
|
||||
copy:
|
||||
src: wg0-test.conf
|
||||
dest: /etc/wireguard/wg0.conf
|
||||
when: ansible_hostname == "ap31-test"
|
||||
|
||||
- name: 10. Envoie le fichier de conf C vers la machine mon.
|
||||
copy:
|
||||
src: wg0-mon.conf
|
||||
dest: /etc/wireguard/wg0.conf
|
||||
when: ansible_hostname == "ap31-mon"
|
||||
|
||||
- name: 11. Active le service Wireguard.
|
||||
ansible.builtin.service:
|
||||
service: wg-quick@wg0.service
|
||||
enabled: true
|
||||
|
||||
- name: 12. Lance le service Wireguard.
|
||||
ansible.builtin.service:
|
||||
service: wg-quick@wg0.service
|
||||
state: restarted
|
17
ansible/wireguard/wg0-mon.conf
Normal file
17
ansible/wireguard/wg0-mon.conf
Normal file
@ -0,0 +1,17 @@
|
||||
# local settings for ap31-mon
|
||||
[Interface]
|
||||
PrivateKey = qNrA3qizZyJ7iPfXQepwA6/g5kkabijifGUW61OO4G4=
|
||||
Address = 10.0.0.1/32
|
||||
ListenPort = 51820
|
||||
|
||||
# remote settings for ap31-prod
|
||||
[Peer]
|
||||
PublicKey = mnWYL52q8bzvvary6s81ROHV1hohu3nlQN0YQkTZTzg=
|
||||
Endpoint = 172.16.0.100:51820
|
||||
AllowedIPs = 10.0.0.2/32
|
||||
|
||||
# remote settings for ap31-test
|
||||
[Peer]
|
||||
PublicKey= Amfx3tgY9WyjhVH8gQJWZpbQVNYwpIt3OFZokMqq43M=
|
||||
Endpoint = 172.16.0.101:51820
|
||||
AllowedIPs = 10.0.0.3/32
|
11
ansible/wireguard/wg0-prod.conf
Normal file
11
ansible/wireguard/wg0-prod.conf
Normal file
@ -0,0 +1,11 @@
|
||||
# local settings for ap31-prod
|
||||
[Interface]
|
||||
PrivateKey = ENtiBbOg56P0DQJhoYe61mNLF06Vtv601rbAAvyKz2M=
|
||||
Address = 10.0.0.2/32
|
||||
ListenPort = 51820
|
||||
|
||||
# remote settings for ap31-mon
|
||||
[Peer]
|
||||
PublicKey = LEkM9UVt21zq7PS8sX+SBihuXr5k9bjAbwSN0dChmAk=
|
||||
Endpoint = 172.16.0.102:51820
|
||||
AllowedIPs = 10.0.0.1/32
|
11
ansible/wireguard/wg0-test.conf
Normal file
11
ansible/wireguard/wg0-test.conf
Normal file
@ -0,0 +1,11 @@
|
||||
# local settings for ap31-test
|
||||
[Interface]
|
||||
PrivateKey = 6Hq3I9MdSB/O8xiXxf1ekysWR2GQgYBss9VNDngbZE4=
|
||||
Address = 10.0.0.3/32
|
||||
ListenPort = 51820
|
||||
|
||||
# remote settings for ap31-mon
|
||||
[Peer]
|
||||
PublicKey = LEkM9UVt21zq7PS8sX+SBihuXr5k9bjAbwSN0dChmAk=
|
||||
Endpoint = 172.16.0.102:51820
|
||||
AllowedIPs = 10.0.0.1/32
|
Loading…
x
Reference in New Issue
Block a user