Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
elearning:workbooks:debian:6:avance:l130:part3 [2022/03/09 18:44] – admin | elearning:workbooks:debian:6:avance:l130:part3 [2023/08/25 01:29] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
~~PDF: | ~~PDF: | ||
- | Version - **2022.01** | + | Version - **2023.01** |
Dernière mise-à-jour : ~~LASTMOD~~ | Dernière mise-à-jour : ~~LASTMOD~~ | ||
- | ====== | + | ====== |
=====Contenu du Module===== | =====Contenu du Module===== | ||
- | * **DOF503 | + | * **LCF803 |
* Contenu du Module | * Contenu du Module | ||
* LAB #1 - Dépendances de Rôles | * LAB #1 - Dépendances de Rôles | ||
Ligne 25: | Ligne 25: | ||
* 2.6.2 - Le Gabarit Enfant | * 2.6.2 - Le Gabarit Enfant | ||
* LAB #3 - Gestion de la Hiérarchie des Variables | * LAB #3 - Gestion de la Hiérarchie des Variables | ||
+ | * LAB #4 - Utilisation des Facts d' | ||
+ | * LAB #5 - La Commande ansible-vault | ||
+ | * 5.1 - Crypter le Fichier | ||
+ | * 5.2 - Editer le Fichier | ||
+ | * 5.3 - Décrypter le Fichier | ||
+ | * 5.4 - Utilisation de Mots de Passe Aléatoires | ||
=====LAB #1 - Dépendances de Rôles===== | =====LAB #1 - Dépendances de Rôles===== | ||
Ligne 39: | Ligne 45: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que dans ce Rôle nous n' | **Important** : Notez que dans ce Rôle nous n' | ||
</ | </ | ||
Ligne 61: | Ligne 67: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que le paquet à installer n'est pas explicitement déclaré. Le paquet est référencé par le contenu de la variable **java_package**, | **Important** : Notez que le paquet à installer n'est pas explicitement déclaré. Le paquet est référencé par le contenu de la variable **java_package**, | ||
</ | </ | ||
Ligne 75: | Ligne 81: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez qu'ici sont déclarées deux variables : **java_home** et **java_package**. | **Important** : Notez qu'ici sont déclarées deux variables : **java_home** et **java_package**. | ||
</ | </ | ||
Ligne 85: | Ligne 91: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Ce fichier ne serait pas normalement vide. Par contre dans ce LAB, nous nous concentrons sur Ansible et seule la présence du fichier est nécessaire pour le bon fonctionnement du LAB. | **Important** : Ce fichier ne serait pas normalement vide. Par contre dans ce LAB, nous nous concentrons sur Ansible et seule la présence du fichier est nécessaire pour le bon fonctionnement du LAB. | ||
</ | </ | ||
Ligne 97: | Ligne 103: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que dans ce Rôle nous n' | **Important** : Notez que dans ce Rôle nous n' | ||
</ | </ | ||
Ligne 121: | Ligne 127: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Ce fichier informe Ansible que le Rôle **tomcat** dépend du Rôle **exemple01.java**. | **Important** : Ce fichier informe Ansible que le Rôle **tomcat** dépend du Rôle **exemple01.java**. | ||
</ | </ | ||
Ligne 137: | Ligne 143: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que dans le Play Book, nous appelons **uniquement** le Rôle **tomcat**. | **Important** : Notez que dans le Play Book, nous appelons **uniquement** le Rôle **tomcat**. | ||
</ | </ | ||
Ligne 226: | Ligne 232: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que le Rôle **exemple01.java** est traité **avant** le Rôle **tomcat**. | **Important** : Notez que le Rôle **exemple01.java** est traité **avant** le Rôle **tomcat**. | ||
</ | </ | ||
Ligne 267: | Ligne 273: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que cette fois-ci, la valeur de la variable **java_package** spécifiée dans le fichier **/ | **Important** : Notez que cette fois-ci, la valeur de la variable **java_package** spécifiée dans le fichier **/ | ||
</ | </ | ||
Ligne 337: | Ligne 343: | ||
Les **Gabarits** ou // | Les **Gabarits** ou // | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La documentation des gabarits se trouvent à cette adresse: **[[https:// | **Important** : La documentation des gabarits se trouvent à cette adresse: **[[https:// | ||
</ | </ | ||
Ligne 352: | Ligne 358: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que dans ce Rôle nous n' | **Important** : Notez que dans ce Rôle nous n' | ||
</ | </ | ||
Ligne 378: | Ligne 384: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que l' | **Important** : Notez que l' | ||
</ | </ | ||
Ligne 452: | Ligne 458: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez l' | **Important** : Notez l' | ||
</ | </ | ||
Ligne 597: | Ligne 603: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que les valeurs des variables spécifiées dans le fichier **/ | **Important** : Notez que les valeurs des variables spécifiées dans le fichier **/ | ||
</ | </ | ||
Ligne 629: | Ligne 635: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez la condition **%%{% if haproxy_stats %}%%** qui ne tiendra compte des quatre lignes jusqu' | **Important** : Notez la condition **%%{% if haproxy_stats %}%%** qui ne tiendra compte des quatre lignes jusqu' | ||
</ | </ | ||
Ligne 645: | Ligne 651: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez qu' | **Important** : Notez qu' | ||
</ | </ | ||
Ligne 710: | Ligne 716: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que les quatre lignes concernant les statistiques ont été incluses dans le fichier. | **Important** : Notez que les quatre lignes concernant les statistiques ont été incluses dans le fichier. | ||
</ | </ | ||
Ligne 726: | Ligne 732: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez qu' | **Important** : Notez qu' | ||
</ | </ | ||
Ligne 795: | Ligne 801: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que les quatre lignes concernant les statistiques n'ont pas été incluses dans le fichier. | **Important** : Notez que les quatre lignes concernant les statistiques n'ont pas été incluses dans le fichier. | ||
</ | </ | ||
Ligne 834: | Ligne 840: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que la variable **haproxy_backends** est une liste YAML. | **Important** : Notez que la variable **haproxy_backends** est une liste YAML. | ||
</ | </ | ||
Ligne 1107: | Ligne 1113: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Ce gabarit ne contient que des directives générales. Les directives spécifiques au protocole http ont été remplacées par des **blocs** nommés **globals**, | **Important** : Ce gabarit ne contient que des directives générales. Les directives spécifiques au protocole http ont été remplacées par des **blocs** nommés **globals**, | ||
</ | </ | ||
Ligne 1158: | Ligne 1164: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que les **blocs** nommés **globals**, | **Important** : Notez que les **blocs** nommés **globals**, | ||
</ | </ | ||
Ligne 1276: | Ligne 1282: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que les **blocs** nommés **globals**, | **Important** : Notez que les **blocs** nommés **globals**, | ||
</ | </ | ||
Ligne 1449: | Ligne 1455: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La variable fixée dans **defaults/ | **Important** : La variable fixée dans **defaults/ | ||
</ | </ | ||
Ligne 1462: | Ligne 1468: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La déclaration de la variable peut être faite dans **roles/ | **Important** : La déclaration de la variable peut être faite dans **roles/ | ||
</ | </ | ||
Ligne 1500: | Ligne 1506: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La variable fixée dans **group_vars/ | **Important** : La variable fixée dans **group_vars/ | ||
</ | </ | ||
Ligne 1549: | Ligne 1555: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La variable fixée dans **playbook.yaml** surcharge la variable fixée dans **group_vars/ | **Important** : La variable fixée dans **playbook.yaml** surcharge la variable fixée dans **group_vars/ | ||
</ | </ | ||
Ligne 1648: | Ligne 1654: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : Notez que la valeur de la variable **endroit** spécifiée dans le fichier **group_vars/ | **Important** : Notez que la valeur de la variable **endroit** spécifiée dans le fichier **group_vars/ | ||
</ | </ | ||
Ligne 1718: | Ligne 1724: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La variable fixée dans **group_vars/ | **Important** : La variable fixée dans **group_vars/ | ||
</ | </ | ||
Ligne 1770: | Ligne 1776: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La variable fixée dans **host_vars/ | **Important** : La variable fixée dans **host_vars/ | ||
</ | </ | ||
Ligne 1813: | Ligne 1819: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important> |
**Important** : La variable fixée dans sur la **ligne de commande** surcharge toutes les autres variables. | **Important** : La variable fixée dans sur la **ligne de commande** surcharge toutes les autres variables. | ||
</ | </ | ||
+ | |||
+ | =====LAB #4 - Utilisation des Facts d' | ||
+ | |||
+ | Ansible Facts sont : | ||
+ | |||
+ | * des variables collectées automatiquement par le module **setup** d' | ||
+ | * spécifiques à l' | ||
+ | |||
+ | Il est cependant possible d' | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible all -i web01, -m setup | more | ||
+ | web01 | SUCCESS => { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ], | ||
+ | " | ||
+ | " | ||
+ | ], | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | --More-- | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le nom de chaque **Fact** commence par **ansible_**. Évitez donc de créer des variables commençant var cette valeur ! | ||
+ | </ | ||
+ | |||
+ | Parmi les Facts, les plus utiles sont : | ||
+ | |||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | |||
+ | Ainsi que dictionnaire **ansible_default_ipv4** : | ||
+ | |||
+ | < | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | </ | ||
+ | |||
+ | Modifiez le fichier **inventory** en mettant les deux machines TargetA et TargetB dans le groupe **linux** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ vi inventory | ||
+ | [trainee@centos8 roles]$ cat inventory | ||
+ | [linux] | ||
+ | targeta | ||
+ | targetb | ||
+ | |||
+ | [group1] | ||
+ | localhost ansible_connection=local | ||
+ | |||
+ | [basededonnees] | ||
+ | web01 | ||
+ | |||
+ | [dotcms] | ||
+ | web02 | ||
+ | web03 | ||
+ | |||
+ | [equilibrage] | ||
+ | web04 | ||
+ | |||
+ | [debian: | ||
+ | basededonnees | ||
+ | dotcms | ||
+ | equilibrage | ||
+ | |||
+ | [debian: | ||
+ | ansible_user=trainee | ||
+ | </ | ||
+ | |||
+ | Modifiez le fichier **playbook.yaml** afin d' | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ vi playbook.yaml | ||
+ | [trainee@centos8 roles]$ cat playbook.yaml | ||
+ | --- | ||
+ | - hosts: all | ||
+ | become: true | ||
+ | roles: | ||
+ | - exemple01.java | ||
+ | </ | ||
+ | |||
+ | Connectez-vous à la machine TargetA et supprimez le paquet **openjdk-8-jre** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ssh 10.0.2.52 | ||
+ | Debian GNU/Linux 9 | ||
+ | Linux targeta.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 | ||
+ | |||
+ | The programs included with the Debian GNU/Linux system are free software; | ||
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in / | ||
+ | |||
+ | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
+ | permitted by applicable law. | ||
+ | Last login: Wed Mar 9 11:29:25 2022 from 10.0.2.45 | ||
+ | trainee@targeta: | ||
+ | ... | ||
+ | trainee@targeta: | ||
+ | déconnexion | ||
+ | Connection to 10.0.2.52 closed. | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | Utilisez la commande scp pour copier le fichier authorized_keys de la machine virtuelle centos8 vers la machine virtuelle targetb : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ cd ~ | ||
+ | [trainee@centos8 ~]$ scp .ssh/ | ||
+ | trainee@10.0.2.53' | ||
+ | authorized_keys | ||
+ | [trainee@centos8 ~]$ cd - | ||
+ | / | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | Connectez-vous à la machine TargetB et supprimez le paquet **java-1.8.0-openjdk** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ssh 10.0.2.53 | ||
+ | Last login: Wed Mar 9 16:51:41 2022 from 10.0.2.45 | ||
+ | [trainee@targetb ~]$ sudo yum -y remove java-1.8.0-openjdk | ||
+ | ... | ||
+ | [trainee@targetb ~]$ exit | ||
+ | logout | ||
+ | Connection to 10.0.2.53 closed. | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | Grâce au Fact **ansible_os_family** il est possible d' | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ vi exemple01.java/ | ||
+ | [trainee@centos8 roles]$ cat exemple01.java/ | ||
+ | --- | ||
+ | - name: install jre (Debian) | ||
+ | package: name=openjdk-8-jre state=present | ||
+ | when: ansible_os_family == ' | ||
+ | |||
+ | - name: install jre (CentOS) | ||
+ | package: name=java-1.8.0-openjdk state=present | ||
+ | when: ansible_os_family == ' | ||
+ | </ | ||
+ | |||
+ | Modifiez le fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ su - | ||
+ | Password: fenestros | ||
+ | [root@centos8 ~]# vi /etc/hosts | ||
+ | [root@centos8 ~]# cat /etc/hosts | ||
+ | 127.0.0.1 | ||
+ | ::1 | ||
+ | 10.0.2.45 centos8.ittraining.loc centos8 | ||
+ | 10.0.2.54 web01.i2tch.loc web01 | ||
+ | 10.0.2.55 web02.i2tch.loc web02 | ||
+ | 10.0.2.56 web03.i2tch.loc web03 | ||
+ | 10.0.2.57 web04.i2tch.loc web04 | ||
+ | 10.0.2.52 targeta.i2tch.loc targeta | ||
+ | 10.0.2.53 targetb.i2tch.loc targetb | ||
+ | [root@centos8 ~]# exit | ||
+ | logout | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | Connectez-vous en ssh à targeta et testez la configuration de sudo : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ssh targeta | ||
+ | The authenticity of host ' | ||
+ | ECDSA key fingerprint is SHA256: | ||
+ | Are you sure you want to continue connecting (yes/ | ||
+ | Warning: Permanently added ' | ||
+ | Debian GNU/Linux 9 | ||
+ | Linux targeta.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 | ||
+ | |||
+ | The programs included with the Debian GNU/Linux system are free software; | ||
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in / | ||
+ | |||
+ | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
+ | permitted by applicable law. | ||
+ | Last login: Wed Mar 9 16:52:16 2022 from 10.0.2.45 | ||
+ | |||
+ | trainee@targeta: | ||
+ | Réception de:1 http:// | ||
+ | Ign:2 http:// | ||
+ | Réception de:3 http:// | ||
+ | Réception de:4 http:// | ||
+ | Réception de:5 http:// | ||
+ | Réception de:6 http:// | ||
+ | Réception de:7 http:// | ||
+ | Réception de:8 http:// | ||
+ | Réception de:9 http:// | ||
+ | Réception de:10 http:// | ||
+ | Réception de:11 http:// | ||
+ | 21,0 Mo réceptionnés en 7s (2 753 ko/s) | ||
+ | Lecture des listes de paquets... Fait | ||
+ | Construction de l' | ||
+ | Lecture des informations d' | ||
+ | 333 packages can be upgraded. Run 'apt list --upgradable' | ||
+ | |||
+ | trainee@targeta: | ||
+ | déconnexion | ||
+ | Connection to targeta closed. | ||
+ | </ | ||
+ | |||
+ | Connectez-vous en ssh à targetb et testez la configuration de sudo : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ssh targetb | ||
+ | The authenticity of host ' | ||
+ | ECDSA key fingerprint is SHA256: | ||
+ | Are you sure you want to continue connecting (yes/ | ||
+ | Warning: Permanently added ' | ||
+ | Last login: Wed Mar 9 16:56:33 2022 from 10.0.2.45 | ||
+ | |||
+ | [trainee@targetb ~]$ yum clean all | ||
+ | Loaded plugins: fastestmirror, | ||
+ | Cleaning repos: base extras updates | ||
+ | Other repos take up 190 M of disk space (use --verbose for details) | ||
+ | |||
+ | [trainee@targetb ~]$ sudo yum -y makecache | ||
+ | Loaded plugins: fastestmirror, | ||
+ | Loading mirror speeds from cached hostfile | ||
+ | * base: centos.mirror.ate.info | ||
+ | * extras: mirror.plusserver.com | ||
+ | * updates: mirror.plusserver.com | ||
+ | base | 3.6 kB 00: | ||
+ | extras | ||
+ | updates | ||
+ | (1/6): extras/ | ||
+ | (2/6): base/ | ||
+ | (3/6): base/ | ||
+ | (4/6): extras/ | ||
+ | (5/6): updates/ | ||
+ | (6/6): updates/ | ||
+ | Metadata Cache Created | ||
+ | |||
+ | [trainee@targetb ~]$ exit | ||
+ | logout | ||
+ | Connection to targetb closed. | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | Exécutez **ansible-playbook** et constatez le résultat : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l linux | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | |||
+ | TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* | ||
+ | ok: [targeta] | ||
+ | ok: [targetb] | ||
+ | |||
+ | TASK [exemple01.java : install jre (Debian)] ********************************************************************************************************************************************************************* | ||
+ | skipping: [targetb] | ||
+ | changed: [targeta] | ||
+ | |||
+ | TASK [exemple01.java : install jre (CentOS)] ********************************************************************************************************************************************************************* | ||
+ | skipping: [targeta] | ||
+ | changed: [targetb] | ||
+ | |||
+ | PLAY RECAP ******************************************************************************************************************************************************************************************************* | ||
+ | targeta | ||
+ | targetb | ||
+ | </ | ||
+ | |||
+ | Les conditions peuvent être combinées grâce à **and** et **or**. En voici un exemple : | ||
+ | |||
+ | < | ||
+ | tasks: | ||
+ | - name: " | ||
+ | command: / | ||
+ | when: (ansible_distribution == " | ||
+ | (ansible_distribution == " | ||
+ | </ | ||
+ | |||
+ | =====LAB #5 - La Commande ansible-vault===== | ||
+ | |||
+ | La commande **ansible-vault** permet de créer et d' | ||
+ | |||
+ | Pour illustrer son utilisation, | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ mkdir vault | ||
+ | </ | ||
+ | |||
+ | Éditez le fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ vi / | ||
+ | [trainee@centos8 roles]$ cat / | ||
+ | --- | ||
+ | secret: gardezmoisecret | ||
+ | </ | ||
+ | |||
+ | Modifiez le fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ vi playbook.yaml | ||
+ | [trainee@centos8 roles]$ cat playbook.yaml | ||
+ | --- | ||
+ | - hosts: all | ||
+ | tasks: | ||
+ | - debug: | ||
+ | msg: "Le secret est {{ secret }}" | ||
+ | </ | ||
+ | |||
+ | Exécutez la commande **ansible-playbook** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | |||
+ | TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* | ||
+ | ok: [localhost] | ||
+ | |||
+ | TASK [debug] ***************************************************************************************************************************************************************************************************** | ||
+ | ok: [localhost] => { | ||
+ | " | ||
+ | } | ||
+ | |||
+ | PLAY RECAP ******************************************************************************************************************************************************************************************************* | ||
+ | localhost | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : L' | ||
+ | </ | ||
+ | |||
+ | ====5.1 - Crypter le Fichier==== | ||
+ | |||
+ | Cryptez maintenant le fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-vault encrypt group_vars/ | ||
+ | New Vault password: fenestros | ||
+ | Confirm New Vault password: fenestros | ||
+ | Encryption successful | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le mot de passe est pour la commande **ansible-vault** et non pas uniquement pour l' | ||
+ | </ | ||
+ | |||
+ | Constatez maintenant le contenu du fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ cat / | ||
+ | $ANSIBLE_VAULT; | ||
+ | 33343664333931323331346338346439613439633633396262393733663463363438663163383761 | ||
+ | 6566653230323032396434356132653262313962633265630a366436666261363933343663623131 | ||
+ | 63373230663530313864373236316465333464323131643933363664303332336261353732623064 | ||
+ | 3538303864633035320a376235333637656534376638613661303765373165383936653336646562 | ||
+ | 31376535333861616165346433306230366231333139323062366432333033386366 | ||
+ | </ | ||
+ | |||
+ | Exécutez de nouveau la commande **ansible-playbook** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | ERROR! Attempting to decrypt but no vault secrets found | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez l' | ||
+ | </ | ||
+ | |||
+ | Pour indiquer à la commande **ansible-playbook** que le fichier qui doit être lu soit crypté, utilisez l' | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | ERROR! Attempting to decrypt but no vault secrets found | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost --ask-vault-pass | ||
+ | Vault password: fenestros | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | |||
+ | TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* | ||
+ | ok: [localhost] | ||
+ | |||
+ | TASK [debug] ***************************************************************************************************************************************************************************************************** | ||
+ | ok: [localhost] => { | ||
+ | " | ||
+ | } | ||
+ | |||
+ | PLAY RECAP ******************************************************************************************************************************************************************************************************* | ||
+ | localhost | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. | ||
+ | </ | ||
+ | |||
+ | ====5.2 - Editer le Fichier==== | ||
+ | |||
+ | Pour éditer le fichier, utilisez la sous-commande **edit** de la commande **ansible-vault** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-vault edit group_vars/ | ||
+ | Vault password: fenestros | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. | ||
+ | </ | ||
+ | |||
+ | Le fichier est chargé en mémoire pour édition : | ||
+ | |||
+ | < | ||
+ | --- | ||
+ | secret: gardezlesecret | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | -- INSERT -- | ||
+ | </ | ||
+ | |||
+ | Modifiez le secret et sauvegardez le fichier : | ||
+ | |||
+ | < | ||
+ | --- | ||
+ | secret: gardezlesecret | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | ~ | ||
+ | :x | ||
+ | </ | ||
+ | |||
+ | Constatez que le contenu du fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ cat / | ||
+ | $ANSIBLE_VAULT; | ||
+ | 36633861376466313363373336643832646663666334633931663262666361306236386232316461 | ||
+ | 3331633863386666626230663038653136653830303465660a353337316634363465663962336365 | ||
+ | 61396430313965653666333738376663336139613566636437353935653232306264336235333538 | ||
+ | 6439366539653436310a666361313237623137666634663439343132393532623962353163303364 | ||
+ | 37626635363832333934363930383265313932663230356234343235643935353535 | ||
+ | </ | ||
+ | |||
+ | Exécutez de nouveau la commande **ansible-playbook** avec l' | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost --ask-vault-pass | ||
+ | Vault password: fenestros | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | |||
+ | TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* | ||
+ | ok: [localhost] | ||
+ | |||
+ | TASK [debug] ***************************************************************************************************************************************************************************************************** | ||
+ | ok: [localhost] => { | ||
+ | " | ||
+ | } | ||
+ | |||
+ | PLAY RECAP ******************************************************************************************************************************************************************************************************* | ||
+ | localhost | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. | ||
+ | </ | ||
+ | |||
+ | ====5.3 - Décrypter le Fichier==== | ||
+ | |||
+ | Il est possible de décrypter le fichier en utilisant la sous-commande **decrypt** de la commande **ansible-vault** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-vault decrypt group_vars/ | ||
+ | Vault password: fenestros | ||
+ | Decryption successful | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. | ||
+ | </ | ||
+ | |||
+ | Constatez que le contenu du fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ cat / | ||
+ | --- | ||
+ | secret: gardezlesecret | ||
+ | </ | ||
+ | |||
+ | ====5.4 - Utilisation de Mots de Passe Aléatoires==== | ||
+ | |||
+ | Installez le paquet **pwgen** : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ su - | ||
+ | Password: fenestros | ||
+ | [root@centos8 ~]# | ||
+ | |||
+ | [root@centos8 ~]# dnf install https:// | ||
+ | Last metadata expiration check: 1:30:37 ago on Wed 09 Mar 2022 10:10:01 EST. | ||
+ | epel-release-latest-8.noarch.rpm | ||
+ | Dependencies resolved. | ||
+ | ================================================================================================================================================================================================================== | ||
+ | | ||
+ | ================================================================================================================================================================================================================== | ||
+ | Installing: | ||
+ | | ||
+ | |||
+ | Transaction Summary | ||
+ | ================================================================================================================================================================================================================== | ||
+ | Install | ||
+ | |||
+ | Total size: 22 k | ||
+ | Installed size: 32 k | ||
+ | Is this ok [y/N]: y | ||
+ | Downloading Packages: | ||
+ | Running transaction check | ||
+ | Transaction check succeeded. | ||
+ | Running transaction test | ||
+ | Transaction test succeeded. | ||
+ | Running transaction | ||
+ | Preparing | ||
+ | Installing | ||
+ | Running scriptlet: epel-release-8-14.el8.noarch | ||
+ | Verifying | ||
+ | Installed products updated. | ||
+ | |||
+ | Installed: | ||
+ | epel-release-8-14.el8.noarch | ||
+ | |||
+ | Complete! | ||
+ | |||
+ | [root@centos8 ~]# dnf install pwgen | ||
+ | Extra Packages for Enterprise Linux 8 - x86_64 | ||
+ | Extra Packages for Enterprise Linux Modular 8 - x86_64 | ||
+ | Last metadata expiration check: 0:00:01 ago on Wed 09 Mar 2022 11:41:14 EST. | ||
+ | Dependencies resolved. | ||
+ | ================================================================================================================================================================================================================== | ||
+ | | ||
+ | ================================================================================================================================================================================================================== | ||
+ | Installing: | ||
+ | | ||
+ | |||
+ | Transaction Summary | ||
+ | ================================================================================================================================================================================================================== | ||
+ | Install | ||
+ | |||
+ | Total download size: 31 k | ||
+ | Installed size: 46 k | ||
+ | Is this ok [y/N]: y | ||
+ | |||
+ | [root@centos8 ~]# exit | ||
+ | logout | ||
+ | [trainee@centos8 roles]$ | ||
+ | </ | ||
+ | |||
+ | Utilisez maintenant la commande **pwgen** pour générer un mot de passe aléatoire : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ pwgen 16 1 | ||
+ | di3Be1AiPayeehai | ||
+ | </ | ||
+ | |||
+ | Utilisez pwgen pour créer un mot de passe aléatoire contenu dans un fichier : | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ pwgen 16 1 > vault-password | ||
+ | |||
+ | [trainee@centos8 roles]$ ls | ||
+ | backend.j2 | ||
+ | |||
+ | [trainee@centos8 roles]$ cat vault-password | ||
+ | oo3aeph5PaiVeiBu | ||
+ | </ | ||
+ | |||
+ | Utilisez maintenant le mot de passe aléatoire contenu dans le fichier **vault-password** pour crypter le fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-vault encrypt group_vars/ | ||
+ | Encryption successful | ||
+ | </ | ||
+ | |||
+ | Constatez le contenu du fichier **/ | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ cat group_vars/ | ||
+ | $ANSIBLE_VAULT; | ||
+ | 61326364653334653935643735623863353362333536396638356362376631633732306332316661 | ||
+ | 6662333436336237346433363637393666623165643438620a343436366136386637343238303063 | ||
+ | 38383866386631363834623461323334313030623136333334646335626165363263373966373663 | ||
+ | 3137333330653635620a396133346264656335633530353966383930613731626639393631623066 | ||
+ | 31323331383563373830306331653166326563333135326631363461313666313864 | ||
+ | </ | ||
+ | |||
+ | Exécutez de nouveau la commande **ansible-playbook** avec l' | ||
+ | |||
+ | < | ||
+ | [trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost --vault-password-file vault-password | ||
+ | |||
+ | PLAY [all] ******************************************************************************************************************************************************************************************************* | ||
+ | |||
+ | TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* | ||
+ | ok: [localhost] | ||
+ | |||
+ | TASK [debug] ***************************************************************************************************************************************************************************************************** | ||
+ | ok: [localhost] => { | ||
+ | " | ||
+ | } | ||
+ | |||
+ | PLAY RECAP ******************************************************************************************************************************************************************************************************* | ||
+ | localhost | ||
+ | </ | ||
+ | |||
----- | ----- | ||
- | Copyright © 2022 Hugh Norris. | + | Copyright © 2023 Hugh Norris. |