From 521fb191b2fc81e3d1ddecddfd362043a2aa7cb6 Mon Sep 17 00:00:00 2001 From: ExtraDev <scott.birner@gmail.com> Date: Mon, 10 Apr 2023 23:23:38 +0200 Subject: [PATCH] documentation --- ...er_tp3_Network_Automation_avec_Ansible.pdf | Bin 949726 -> 949749 bytes README.md | 77 ++++++++++++------ 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/Birner_tp3_Network_Automation_avec_Ansible.pdf b/Birner_tp3_Network_Automation_avec_Ansible.pdf index 38f7394f4b397f3a0db7f5cbd91c0598626d9cda..cbee0cebe67049c0943fcbea699b0abf5b88e919 100644 GIT binary patch delta 13719 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
)}<Dvt4Yj9NUNGYtQPp=w05v^Rd<9#-arZ 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 F0RWcEyuAPb delta 13745 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 Wic6+HsO96~G&kZ>Rdw}u;{pJ^dAXJV diff --git a/README.md b/README.md index f22907c..142bab4 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Illustration de la topologie que nous allons utiliser pour ce laboratoire. ansible -m ping -i "H1,H2,R1,R2" all ``` -Cette commande fait appel au module de ping et effectue un ping sur tous les hôtes spécifié dans l'inventory. En réalise un test connectivity depuis notre machine. +Cette commande fait appel au module **ping** et effectue un ping sur tous les hôtes spécifié dans l'inventory. On réalise donc ici un test connectivity depuis notre machine hôte. **Résultat de la commande:** @@ -124,7 +124,7 @@ ssh H1 ls /tmp/hello.txt ## Quelle est la différente entre les modules command, shell et raw ? Expliquez et donner des exemples. -Ces trois commande on le même objectif, à savoir exécuter des commandes sur les noeuds. +Ces trois commandes ont le même objectif, à savoir exécuter des commandes sur les noeuds. ### Command @@ -177,7 +177,7 @@ Exemple playbook ### Raw -Maintenant, le module **raw** utilise simplement SSH et contourne le sous-système du module Ansible. De cette façon, le module **raw** fonctionnera avec succès sur le nœud géré même si Python n'est pas installé (sur le nœud géré). Le module "raw" est utile lorsque vous avez besoin de faire des choses comme installer Python sur un hôte où Python n'est pas déjà installé. +Maintenant, le module **raw** utilise simplement SSH et contourne le sous-système du module Ansible. De cette façon, le module **raw** fonctionnera avec succès sur le nœud géré même si Python n'est pas installé (sur le noeud géré). Le module "raw" est utile lorsque vous avez besoin de faire des choses comme installer Python sur un hôte où Python n'est pas déjà installé. Exemple ad-hoc ```bash @@ -419,11 +419,11 @@ ansible-playbook -i inventory.yaml playbook.yml \newpage ## Vérification du bon fonctionnement -Dans cette illusation on peut voir que toutes machines ont le bon hostname. Cela veut dire que la première tâches du playbook à savoir renommer les machines a correctement été effectué. +Dans cette illusation on peut voir que toutes machines ont le bon hostname. Cela veut dire que la première tâches du playbook à savoir renommer les hostname des machines a correctement été effectué.  -On peut également constater que le ping entre la machine H1 et H2 passe correctement. Cela veut dire que les tâches 2 et 3 du playbook à savoir la configuration réseau de H1, H2 ainsi que R1, R2 a bien été effectuée. +On peut également constater que le ping entre la machine H1 et H2 passe correctement. Cela veut dire que les tâches 2 et 3 du playbook à savoir la configuration réseau de H1, H2 ainsi que R1, R2 ont bien été effectuée. **Configuration réseau de H1** (/etc/network/interfaces.d/interfaces_playbook.conf ) @@ -714,6 +714,22 @@ Pour réaliser les tâches demandées, nous avons découpé le playbook en sept ... ``` +Pour tester le playbook avant application de celui, voici la commande utilisée afin de checker la synthax: +```bash + ansible-playbook --syntax-check -i ../inventory.ini Config_Wireguard.yml +``` + +Puis la commande suivante pour tester la configuration sans l'appliquer de manière idem-potente: +```bash +ansible-playbook -i ../inventory.ini Config_Wireguard.yml --vault-password-file vault_file -CD +``` + +Et enfin, la commmande qui permet d'appliquer la configuration du playbook sur nos noeuds: +```bash +ansible-playbook -i ../inventory.ini Config_Wireguard.yml --vault-password-file vault_file +``` + + \newpage  @@ -765,7 +781,7 @@ echo " H1PRIV: $(cat privkey_H1 )" >> keys.yml echo " H1PUB: $(cat pubkey_H1 )" >> keys.yml ``` -Ce script permet de générer les clés ssh de H1 et H2 via **wg genkey** et en plus de les chiffrer avec le mot de passe contenu dans le fichier **vaul_file**. Enfin, les clés sont stockée dans le fichier keys.yml qui est chargé au début du playbook (première tâche) pour être repartie sur les hotes. +Ce script permet de générer les clés ssh de H1 et H2 via **wg genkey** et de les chiffrer avec le mot de passe contenu dans le fichier **vaul_file**. Enfin, les clés sont stockée dans le fichier keys.yml qui est chargé au début du playbook (première tâche) pour être repartie sur les hotes. Contenu du fichier vault_file ```{.numberLines} @@ -824,9 +840,9 @@ server { } } ``` -La configuration nginx suivante définit un serveur web qui écoute l'adresse 10.0.0.1, sur le port 80. En effet, une fois la configuration installée, nous ferons un "curl 10.0.0.1" depuis H1 pour accéder au site web sur H2. +La configuration nginx suivante définit un serveur web qui écoute l'adresse 10.0.0.1, sur le port 80. En effet, une fois la configuration installée, nous ferons un "curl 10.0.0.1" depuis H1 pour accéder au site web hébergé par H2 en passant par wireguard. -La partie "location" spécifie que toutes les requêtes HTTP reçues seront traitées à partir du répertoire racine **/var/www/html**, et que le fichier index.html sera servi comme point d'entrée. +La partie "location" spécifie que toutes les requêtes HTTP reçues seront traitées à partir du répertoire racine **/var/www/html**, et que le fichier index.html sera servit comme point d'entrée. ## Vérification du bon fonctionnement @@ -850,6 +866,8 @@ root@H2:~# ip -c a valid_lft forever preferred_lft forever ``` +Ici, on peut constater que les interface sont bien configurée et que l'interface de wireguard est elle aussi active et correctement configurée. + **Vérification que le service nginx est en fonction** ```{.numberLines} @@ -888,6 +906,17 @@ PublicKey = Vy/elocNbmBa6Z78u4KEOvxDVBjmXIOEuzSNDVQe5RQ= AllowedIPs = 10.0.0.0/24 ``` +**Test de connectivité via un ping passant par wireguard** + +```{.numberLines} +root@H2:~# ping 10.0.0.2 +PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. +64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=8.53 ms +64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=3.76 ms +64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=3.98 ms + +``` + ### Vérification de H1 **Vérification des interfaces** @@ -908,20 +937,6 @@ root@H1:~# ip -c a valid_lft forever preferred_lft forever ``` -**Test de connectivité via un ping** - -```{.numberLines} -root@H1:~# ping 3.0.0.2 -PING 3.0.0.2 (3.0.0.2) 56(84) bytes of data. -64 bytes from 3.0.0.2: icmp_seq=1 ttl=62 time=5.84 ms -64 bytes from 3.0.0.2: icmp_seq=2 ttl=62 time=3.17 ms -64 bytes from 3.0.0.2: icmp_seq=3 ttl=62 time=3.20 ms - ---- 3.0.0.2 ping statistics --- -3 packets transmitted, 3 received, 0% packet loss, time 2003ms -rtt min/avg/max/mdev = 3.165/4.068/5.835/1.249 ms -``` - **Vérification de la configuration de wireguard** ```{.numberLines} @@ -937,6 +952,16 @@ Endpoint = 3.0.0.2:51820 <----- Endpoint de H2 AllowedIPs = 10.0.0.0/24 ``` +**Test de connectivité via un ping passant par wireguard** + +```{.numberLines} +root@H1:~# ping 10.0.0.1 +PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. +64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=3.30 ms +64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=3.67 ms +64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=3.58 ms +``` + **Récupération de la page web hébergée par H2** En exécutant la commande curl, on constate qu'on arrive à récupérer la page web hébergée sur H2 via 10.0.0.1. Cela confirme que l'on passe par le wireguard. @@ -967,13 +992,10 @@ ansible-doc -l # Permet de checker si la synthax du playbook est valide ansible-playbook --syntax-check Config_H1_H2_Playbook.yml -# Permet de checker si la synthax du playbook est valide -ansible-playbook --syntax-check -i ../inventory.ini Config_H1_H2_Playbook.yml - # Permet de valider les tâches du playbook sans appliquer les modifications sur les hôtes ansible-playbook -i ../inventory.ini Config_H1_H2_Playbook.yml -CD -# Permet d'appliquer le playbooken passant le fichier vault +# Permet d'appliquer le playbook en passant le fichier vault ansible-playbook -i ../inventory.ini Config_Wireguard.yml --vault-password-file vault_file ``` @@ -988,4 +1010,7 @@ ip -c a # Permet d'afficher les route intstalée ip route +# Permet de générer le fichier keys.yml +bash Generate_keys.sh + ``` \ No newline at end of file -- GitLab