Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:centos:8:lcf900:l704 [2022/05/17 08:05] adminelearning:workbooks:centos:8:lcf900:l704 [2024/12/03 14:37] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version **2022.02**+Version **2024.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
  
-====== LCF704 Facts, Facts Secrets et Docker======+======LDF904 Utilisation d'Ansible avec Docker et Windows======
  
 =====Contenu du Module===== =====Contenu du Module=====
  
-  * **LCF704 Facts, Facts Secrets et Docker**+  * **LDF904 Utilisation d'Ansible avec Docker et Windows**
     * Contenu du Module     * Contenu du Module
-    * LAB #1 - Utilisation des Facts d'Ansible +    * LAB #1 - Ansible et Docker 
-    * LAB #2 - La Commande ansible-vault +      * 1.1 - Présentation de Docker 
-      * 2.1 - Crypter le Fichier +      * 1.2 - Installer Docker 
-      * 2.2 - Editer le Fichier +      * 1.3 - La Connexion à Docker 
-      * 2.3 - Décrypter le Fichier +    * LAB #2 - Préparer Windows 10 
-      * 2.4 - Utilisation de Mots de Passe Aléatoires +      * 2.1 - Mettre à Jour PowerShell et .NET 
-    * LAB #3 - Ansible et Docker +      * 2.2 - Configurer WinRM 
-      * 3.1 - Présentation de Docker +      * 2.3 - Consulter les Informations sur WinRM 
-      * 3.2 - Installer Docker +      * 2.4 - Créer un Utilisateur Local pour Ansible 
-      * 3.3 - La Connexion à Docker+    * LAB #3 - Préparer le Contrôleur Ansible 
 +      * 3.1 - Installer pywinrm 
 +      * 3.2 - Tester la Configuration 
 +    * LAB #4 - Travailler avec Ansible et Windows 
 +      * 4.1 - Obtenir les Informations sur Windows10 
 +      * 4.2 - Exécuter une Commande 
 +      * 4.3 - Exécuter un script PowerShell 
 +      * 4.4 - Installer un Logiciel avec Chocolatey 
 +      * 4.5 - Créer un Utilisateur Local
  
-=====LAB #1 - Utilisation des Facts d'Ansible=====+=====LAB #1 - Ansible et Docker=====
  
-Ansible Facts sont :+====1.1 - Présentation de Docker====
  
-  * des variables collectées automatiquement par le module **setup** d'Ansible lors du contrôle à distance d'un hôte, +Docker est une application de virtualisation légère qui utilise des **images** et des **conteneurs**.
-  spécifiques à l'hôte concerné+
  
-Il est cependant possible d'exécuter ce module manuellement afin de voir les Facts collectées :+Une **image** est un paquet exécutable contenant tout ce qu'il est nécessaire afin d'exécuter un logiciel donné, incluant :
  
-<code> +  * le code 
-[trainee@centos8 roles]$ ansible all -i web01, -m setup | more +  * un runtime 
-web01 | SUCCESS => { +  * des bibliothèques
-    "ansible_facts":+  * des variables d'environnement 
-        "ansible_all_ipv4_addresses":+  * des fichiers de configuration
-            "10.0.2.54" +
-        ]+
-        "ansible_all_ipv6_addresses": [ +
-            "fe80::d255:17e1:74c1:306e" +
-        ], +
-        "ansible_apparmor":+
-            "status": "disabled" +
-        }, +
-        "ansible_architecture": "x86_64", +
-        "ansible_bios_date": "04/01/2014", +
-        "ansible_bios_vendor": "SeaBIOS", +
-        "ansible_bios_version": "rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org", +
-        "ansible_board_asset_tag": "NA", +
-        "ansible_board_name": "NA", +
-        "ansible_board_serial": "NA", +
-        "ansible_board_vendor": "NA", +
-        "ansible_board_version": "NA", +
-        "ansible_chassis_asset_tag": "NA", +
-        "ansible_chassis_serial": "NA", +
-        "ansible_chassis_vendor": "QEMU", +
-        "ansible_chassis_version": "pc-i440fx-5.2", +
-        "ansible_cmdline":+
-            "BOOT_IMAGE": "/boot/vmlinuz-4.9.0-8-amd64", +
-            "quiet": true, +
-            "ro": true, +
-            "root": "UUID=b29b93ed-8de4-4980-a407-15bba3ad09ba" +
-        }, +
-        "ansible_date_time":+
-            "date": "2022-03-09", +
-            "day": "09", +
-            "epoch": "1646840799", +
-            "hour": "16", +
-            "iso8601": "2022-03-09T15:46:39Z", +
-            "iso8601_basic": "20220309T164639891872", +
-            "iso8601_basic_short": "20220309T164639", +
-            "iso8601_micro": "2022-03-09T15:46:39.891872Z", +
-            "minute": "46", +
-            "month": "03", +
-            "second": "39", +
-            "time": "16:46:39", +
-            "tz": "CET", +
-            "tz_dst": "CEST", +
-            "tz_offset": "+0100", +
-            "weekday": "mercredi", +
-            "weekday_number": "3", +
-            "weeknumber": "10", +
-            "year": "2022" +
-        }, +
-        "ansible_default_ipv4":+
-            "address": "10.0.2.54", +
-            "alias": "ens18", +
-            "broadcast": "10.0.2.255", +
-            "gateway": "10.0.2.1", +
---More-- +
-</code>+
  
-<WRAP center round important 60%> +Un **conteneur** est une instance de l'image en cours d'exécution en mémoireElle est isolée de l'environnement de l'hôte par défaut mais peut accéder à des fichiers et de ports de l'hôte selon la configuration.
-**Important** : Notez que le nom de chaque **Fact** commence par **ansible_**Évitez donc de créer des variables commençant var cette valeur ! +
-</WRAP>+
  
-Parmi les Facts, les plus utiles sont :+Les conteneurs exécutent des applications nativement en utilisant le noyau de la machine hôte. De ce fait les performances d'un conteneur sont supérieures à celles d'une machine virtuelle qui doit passer par un hyperviseur pour accéder aux ressources de la machine hôte :
  
-  "ansible_hostname": "web01", +Docker existe en deux versions **Docker-CE** (Docker Community Edition) et **Docker-EE** (Docker Enterprise Edition)Pour consulter les différences entre les deux versionsconsultez le lien  **[[https://docs.docker.com/engine/installation/]]**.
-  "ansible_fqdn": "web01.i2tch.loc", +
-  "ansible_architecture": "x86_64", +
-  "ansible_distribution": "Debian", +
-  "ansible_distribution_major_version": "9", +
-  "ansible_distribution_version": "9.7", +
-  "ansible_os_family": "Debian", +
-  "ansible_memtotal_mb"240, +
-  "ansible_processor_cores": 1, +
-  "ansible_virtualization_role": "guest".+
  
-Ainsi que dictionnaire **ansible_default_ipv4** :+====1.2 - Installer docker====
  
-<file> +Docker n'est pas dans le dépôts de DebianAfin de l'installer il convient d'ajouter le dépôt de dockerPremièrementil est nécessaire d'installer les paquets permettant à Debian d'utiliser un dépôt en https :
-        "ansible_default_ipv4":+
-            "address": "10.0.2.54", +
-            "alias": "ens18", +
-            "broadcast": "10.0.2.255", +
-            "gateway": "10.0.2.1", +
-            "interface": "ens18", +
-            "macaddress": "de:b9:d4:17:cd:da", +
-            "mtu": 1500, +
-            "netmask": "255.255.255.0", +
-            "network": "10.0.2.0", +
-            "type": "ether" +
-        }, +
-</file> +
- +
-Modifiez le fichier **inventory** en mettant les deux machines TargetA et TargetB dans le groupe **linux** :+
  
 <code> <code>
-[trainee@centos8 roles]$ vi inventory +root@debian11:~# apt-get update 
-[trainee@centos8 roles]$ cat inventory +... 
-[linux] +root@debian11:~# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common 
-targeta +Reading package lists... Done 
-targetb +Building dependency tree... Done 
- +Reading state information... Done 
-[group1] +ca-certificates is already the newest version (20210119). 
-localhost ansible_connection=local +gnupg2 is already the newest version (2.2.27-2+deb11u2). 
- +The following packages were automatically installed and are no longer required: 
-[basededonnees] +  libopengl0 linux-headers-5.10.0-15-amd64 linux-headers-5.10.0-15-common 
-web01 +Use 'apt autoremove' to remove them. 
- +The following additional packages will be installed: 
-[dotcms] +  python3-distro-info python3-software-properties unattended-upgrades 
-web02 +Suggested packages: 
-web03 +  bsd-mailx default-mta | mail-transport-agent needrestart powermgmt-base 
- +The following NEW packages will be installed: 
-[equilibrage] +  apt-transport-https curl python3-distro-info python3-software-properties 
-web04 +  software-properties-common unattended-upgrades 
- +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. 
-[debian:children] +Need to get 661 kB of archives. 
-basededonnees +After this operation, 1,567 kB of additional disk space will be used. 
-dotcms +Do you want to continue? [Y/ny
-equilibrage +
- +
-[debian:vars] +
-ansible_user=trainee+
 </code> </code>
  
-Modifiez le fichier **playbook.yaml** afin d'utiliser le Rôle **exemple01.java** en tant qu'utilisateur privilégié :+Téléchargez la clef GPG officielle de docker :
  
 <code> <code>
-[trainee@centos8 roles]$ vi playbook.yaml +root@debian11:~# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add 
-[trainee@centos8 roles]$ cat playbook.yaml +Warningapt-key is deprecatedManage keyring files in trusted.gpg.d instead (see apt-key(8)). 
---- +OK
-- hostsall +
-  become: true +
-  roles:  +
-    exemple01.java +
 </code> </code>
  
-Connectez-vous à la machine TargetA et supprimez le paquet **openjdk-8-jre** :+Vérifiez que l'ID de la clef est **9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88** :
  
 <code> <code>
-[trainee@centos8 roles]$ ssh 10.0.2.52 +root@debian11:~# apt-key fingerprint 0EBFCD88 
-Debian GNU/Linux 9 +Warning: apt-key is deprecatedManage keyring files in trusted.gpg.d instead (see apt-key(8))
-Linux targeta.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27x86_64 +pub   rsa4096 2017-02-22 [SCEA] 
- +      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88 
-The programs included with the Debian GNU/Linux system are free software; +uid           [ unknown] Docker Release (CE deb) <docker@docker.com> 
-the exact distribution terms for each program are described in the +sub   rsa4096 2017-02-22 [S]
-individual files in /usr/share/doc/*/copyright+
- +
-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:~$ sudo apt-get -y remove openjdk-8-jre +
-... +
-trainee@targeta:~$ exit +
-déconnexion +
-Connection to 10.0.2.52 closed+
-[trainee@centos8 roles]$+
 </code> </code>
  
-Utilisez la commande scp pour copier le fichier authorized_keys de la machine virtuelle centos8 vers la machine virtuelle targetb :+Ajoutez le dépôt **stable** de docker :
  
 <code> <code>
-[trainee@centos8 roles]$ cd ~ +root@debian11:~# add-apt-repository "deb [arch=amd64https://download.docker.com/linux/debian $(lsb_release -cs) stable"
-[trainee@centos8 ~]$ scp .ssh/authorized_keys trainee@10.0.2.53:/home/trainee/.ssh/authorized_keys +
-trainee@10.0.2.53's password:  +
-authorized_keys                                                                                                                                                                 100%  888     8.9KB/s   00:00     +
-[trainee@centos8 ~]cd - +
-/home/trainee/.ansible/roles +
-[trainee@centos8 roles]$ +
 </code> </code>
  
-Connectez-vous à la machine TargetB et supprimez le paquet **java-1.8.0-openjdk** :+<WRAP center round important 50%> 
 +**Important** Notez que la commande **lsb_release -cs** retourne le nom de la distribution Debian, à savoir dans ce cas **stretch**. 
 +</WRAP> 
 + 
 +Installez maintenant le paquet **docker-ce** :
  
 <code> <code>
-[trainee@centos8 roles]$ ssh 10.0.2.53 +root@debian11docker:~# apt-get update
-Last loginWed 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 +root@debian11:~# apt-get install docker-ce 
-logout +Reading package lists... Done 
-Connection to 10.0.2.53 closed+Building dependency tree... Done 
-[trainee@centos8 roles]+Reading state information... Done 
 +The following packages were automatically installed and are no longer required: 
 +  libopengl0 linux-headers-5.10.0-15-amd64 linux-headers-5.10.0-15-common 
 +Use 'apt autoremove' to remove them
 +The following additional packages will be installed: 
 +  containerd.io docker-buildx-plugin docker-ce-cli docker-ce-rootless-extras 
 +  docker-compose-plugin git git-man liberror-perl libslirp0 pigz slirp4netns 
 +Suggested packages: 
 +  aufs-tools cgroupfs-mount | cgroup-lite git-daemon-run | git-daemon-sysvinit 
 +  git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn 
 +The following NEW packages will be installed: 
 +  containerd.io docker-buildx-plugin docker-ce docker-ce-cli 
 +  docker-ce-rootless-extras docker-compose-plugin git git-man liberror-perl 
 +  libslirp0 pigz slirp4netns 
 +0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded. 
 +Need to get 121 MB of archives. 
 +After this operation, 452 MB of additional disk space will be used. 
 +Do you want to continue? [Y/ny
 </code> </code>
  
-Grâce au Fact **ansible_os_family** il est possible d'appliquer le fichier **/home/trainee/.ansible/roles/exemple01.java/tasks/main.yaml** aux deux distributions. Notez l'utilisation de la clause **when** :+Dernièrement, vérifiez la version de Docker client et serveur :
  
 <code> <code>
-[trainee@centos8 roles]$ vi exemple01.java/tasks/main.yaml +root@debian11:~# docker version 
-[trainee@centos8 roles]$ cat exemple01.java/tasks/main.yaml +Client: Docker Engine - Community 
---- + Version:           24.0.5 
-- nameinstall jre (Debian) + API version:       1.43 
-  packagename=openjdk-8-jre state=present + Go version:        go1.20.6 
-  whenansible_os_family == 'Debian'+ Git commit:        ced0996 
 + Built            Fri Jul 21 20:35:45 2023 
 + OS/Arch          linux/amd64 
 + Context          default
  
-nameinstall jre (CentOS+Server: Docker Engine Community 
-  packagename=java-1.8.0-openjdk state=present + Engine: 
-  whenansible_os_family == 'RedHat'+  Version:          24.0.6 
 +  API version:      1.43 (minimum version 1.12
 +  Go version      go1.20.7 
 +  Git commit:       1a79695 
 +  Built:            Mon Sep  4 12:32:16 2023 
 +  OS/Arch:          linux/amd64 
 +  Experimental:     false 
 + containerd: 
 +  Version:          1.6.22 
 +  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca 
 + runc: 
 +  Version:          1.1.8 
 +  GitCommit:        v1.1.8-0-g82f18fe 
 + docker-init: 
 +  Version:          0.19.0 
 +  GitCommit       de40ad0
 </code> </code>
  
-Modifiez le fichier **/etc/hosts** de la machine **centos8** :+<WRAP center round important 50%> 
 +**Important** - Notez que le paquet docker-ce a besoin des paquets **containerd.io** et **docker-ce-cli**. Notez aussi que la procédure ci-dessus installe la version la plus récente de Docker. 
 +</WRAP> 
 + 
 +Dans le cas où vous souhaitez installer une version différente, il convient d'abord de constater les versions disponibles :
  
 <code> <code>
-[trainee@centos8 roles]$ su +root@debian11:~# apt-cache madison docker-ce 
-Passwordfenestros + docker-ce | 5:24.0.6-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-[root@centos8 ~]# vi /etc/hosts + docker-ce | 5:24.0.5-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-[root@centos8 ~]# cat /etc/hosts + docker-ce | 5:24.0.4-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 + docker-ce | 5:24.0.3-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 + docker-ce | 5:24.0.2-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.45 centos8.ittraining.loc centos8 + docker-ce | 5:24.0.1-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.54 web01.i2tch.loc web01 + docker-ce | 5:24.0.0-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.55 web02.i2tch.loc web02 + docker-ce | 5:23.0.6-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.56 web03.i2tch.loc web03 + docker-ce | 5:23.0.5-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.57 web04.i2tch.loc web04 + docker-ce | 5:23.0.4-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.52 targeta.i2tch.loc targeta  + docker-ce | 5:23.0.3-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-10.0.2.53 targetb.i2tch.loc targetb + docker-ce | 5:23.0.2-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-[root@centos8 ~]# exit + docker-ce | 5:23.0.1-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-logout + docker-ce | 5:23.0.0-1~debian.11~bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
-[trainee@centos8 roles]$+ docker-ce | 5:20.10.24~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.23~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.22~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.21~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.20~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.19~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.18~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.17~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.16~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.15~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.14~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.13~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.12~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.11~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.10~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.9~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.8~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.7~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages 
 + docker-ce | 5:20.10.6~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
 </code> </code>
  
-Connectez-vous en ssh à targeta et testez la configuration de sudo :+Dans le cas où vous souhaiteriez installer la version **24.0.1** de Docker, la commande d’installation deviendrait :
  
 <code> <code>
-[trainee@centos8 roles]$ ssh targeta +# apt-get install docker-ce=5:24.0.1-1~debian.11~bullseye docker-ce-cli=5:24.0.1-1~debian.11~bullseye containerd.io 
-The authenticity of host 'targeta (10.0.2.52)' can't be established. +</code>
-ECDSA key fingerprint is SHA256:sEfHBv9azmK60cjqF/aJgUc9jg56slNaZQdAUcvBOvE. +
-Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +
-Warning: Permanently added 'targeta' (ECDSA) to the list of known hosts. +
-Debian GNU/Linux 9 +
-Linux targeta.i2tch.loc 4.9.0-8-amd64 #SMP Debian 4.9.130-2 (2018-10-27) x86_64+
  
-The programs included with the Debian GNU/Linux system are free software; +Si vous préférez utiliser le script d'installation de Docker, il convient d'abord de le télécharger :
-the exact distribution terms for each program are described in the +
-individual files in /usr/share/doc/*/copyright.+
  
-Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent +<WRAP center round important 50%> 
-permitted by applicable law+**Important** - Notez que ces scripts ne doivent pas être utilisés dans un environnement de production
-Last login: Wed Mar  9 16:52:16 2022 from 10.0.2.45+</WRAP>
  
-trainee@targeta:~$ sudo apt update +<code> 
-Réception de:1 http://security.debian.org/debian-security stretch/updates InRelease [53,0 kB] +root@debian11:~# curl -fsSL https://get.docker.com -o get-docker.sh
-Ign:2 http://ftp.fr.debian.org/debian stretch InRelease                +
-Réception de:3 http://ftp.fr.debian.org/debian stretch-updates InRelease [93,6 kB] +
-Réception de:4 http://ftp.fr.debian.org/debian stretch Release [118 kB] +
-Réception de:5 http://ftp.fr.debian.org/debian stretch Release.gpg [3 177 B] +
-Réception de:6 http://security.debian.org/debian-security stretch/updates/main Sources [396 kB] +
-Réception de:7 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [759 kB] +
-Réception de:8 http://security.debian.org/debian-security stretch/updates/main Translation-en [354 kB] +
-Réception de:9 http://ftp.fr.debian.org/debian stretch/main Sources [6 736 kB]        +
-Réception de:10 http://ftp.fr.debian.org/debian stretch/main amd64 Packages [7 080 kB] +
-Réception de:11 http://ftp.fr.debian.org/debian stretch/main Translation-en [5 377 kB] +
-21,0 Mo réceptionnés en 7s (2 753 ko/s)                                                                                                                                                                           +
-Lecture des listes de paquets... Fait +
-Construction de l'arbre des dépendances        +
-Lecture des informations d'état... Fait +
-333 packages can be upgradedRun 'apt list --upgradable' to see them.+
  
-trainee@targeta:~$ exit +root@debian11:~# ls 
-déconnexion +get-docker.sh
-Connection to targeta closed.+
 </code> </code>
  
-Connectez-vous en ssh à targetb et testez la configuration de sudo :+Ensuite, il convient d'exécuter le script :
  
 <code> <code>
-[trainee@centos8 roles]$ ssh targetb +root@debian11:~# chmod +x get-docker.sh 
-The authenticity of host 'targetb (10.0.2.53)' can't be established. +
-ECDSA key fingerprint is SHA256:RgOsp/XI7JHNq+oIfHKw+jkHdtTnBIh+Dd7kVmHRxtU. +
-Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +
-Warning: Permanently added 'targetb' (ECDSA) to the list of known hosts. +
-Last login: Wed Mar  9 16:56:33 2022 from 10.0.2.45+
  
-[trainee@targetb ~]$ yum clean all +root@debian11:~# ./get-docker.sh  
-Loaded pluginsfastestmirror, langpacks +# Executing docker install script, commitc2de0811708b6d9015ed1a2c80f02c9b70c8ce7b 
-Cleaning reposbase extras updates +Warningthe "docker" command appears to already exist on this system.
-Other repos take up 190 M of disk space (use --verbose for details)+
  
-[trainee@targetb ~]$ sudo yum -y makecache +If you already have Docker installedthis script can cause trouble, which is 
-Loaded plugins: fastestmirrorlangpacks +why we're displaying this warning and provide the opportunity to cancel the 
-Loading mirror speeds from cached hostfile +installation.
- * base: centos.mirror.ate.info +
- * extras: mirror.plusserver.com +
- * updates: mirror.plusserver.com +
-base                                                                                                                                                                                       | 3.6 kB  00:00:00      +
-extras                                                                                                                                                                                     | 2.9 kB  00:00:00      +
-updates                                                                                                                                                                                    | 2.9 kB  00:00:00      +
-(1/6): extras/7/x86_64/other_db                                                                                                                                                            | 147 kB  00:00:00      +
-(2/6): base/7/x86_64/filelists_db                                                                                                                                                          | 7.2 MB  00:00:00      +
-(3/6): base/7/x86_64/other_db                                                                                                                                                              | 2.6 MB  00:00:00      +
-(4/6): extras/7/x86_64/filelists_db                                                                                                                                                        | 277 kB  00:00:00      +
-(5/6): updates/7/x86_64/other_db                                                                                                                                                           | 1.0 MB  00:00:00      +
-(6/6): updates/7/x86_64/filelists_db                                                                                                                                                       | 7.8 MB  00:00:00      +
-Metadata Cache Created+
  
-[trainee@targetb ~]$ exit +If you installed the current Docker package using this script and are using it 
-logout +again to update Docker, you can safely ignore this message. 
-Connection to targetb closed+ 
-[trainee@centos8 roles]$+You may press Ctrl+C now to abort this script
 ++ sleep 20 
 +^C
 </code> </code>
  
-Exécutez **ansible-playbook** et constatez le résultat :+<WRAP center round important 50%> 
 +**Important** - Notez l'utilisation de **^C** pour ne PAS continuer l'exécution du script. 
 +</WRAP> 
 + 
 +Démarrez un conteneur de l'image hello-world :
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l linux+root@debian11:~# docker run hello-world 
 +Unable to find image 'hello-world:latest' locally 
 +latest: Pulling from library/hello-world 
 +719385e32844: Pull complete  
 +Digest: sha256:dcba6daec718f547568c562956fa47e1b03673dd010fe6ee58ca806767031d1c 
 +Status: Downloaded newer image for hello-world:latest
  
-PLAY [all] *******************************************************************************************************************************************************************************************************+Hello from Docker! 
 +This message shows that your installation appears to be working correctly.
  
-TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* +To generate this message, Docker took the following steps
-ok[targeta] + 1. The Docker client contacted the Docker daemon. 
-ok: [targetb]+ 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 
 +    (amd64) 
 + 3. The Docker daemon created a new container from that image which runs the 
 +    executable that produces the output you are currently reading. 
 + 4. The Docker daemon streamed that output to the Docker client, which sent it 
 +    to your terminal.
  
-TASK [exemple01.java install jre (Debian)] ********************************************************************************************************************************************************************* +To try something more ambitious, you can run an Ubuntu container with
-skipping: [targetb] + $ docker run -it ubuntu bash
-changed: [targeta]+
  
-TASK [exemple01.java install jre (CentOS)] ********************************************************************************************************************************************************************* +Share images, automate workflows, and more with a free Docker ID
-skipping[targeta] + https://hub.docker.com/
-changed: [targetb]+
  
-PLAY RECAP ******************************************************************************************************************************************************************************************************* +For more examples and ideas, visit
-targeta                    ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0    + https://docs.docker.com/get-started/
-targetb                    ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0  +
 </code> </code>
  
-Les conditions peuvent être combinées grâce à **and** et **or**. En voici un exemple :+<WRAP center round important 50%> 
 +**Important** - Notez que si l'image servant à générer le conteneur n'est pas présente sur le système hôte, celle-ci est téléchargée automatiquement depuis un dépôt ( par défaut le dépôt **docker.io** ) en utilisant la commande **docker pull**. 
 +</WRAP>
  
-<file> +Lancez maintenant un conteneur postgresql :
-tasks: +
-  - name: "Extinction des systèmes CentOS 6 et Debian 7" +
-    command: /sbin/shutdown -t now +
-    when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "6") or +
-          (ansible_distribution == "Debian" and ansible_distribution_major_version == "7"+
-</file>+
  
-=====LAB #La Commande ansible-vault=====+<code> 
 +root@debian11:~docker run ---name postgresql centos sleep infinity 
 +7d948c33b2f42e1823ae22353815ea674695fa1dc9e6bd70acc49a80651845c5 
 +</code>
  
-La commande **ansible-vault** permet de créer et d'utiliser des fichiers cryptés, par exemple, ceux qui contiennent des mots de passe.+Vérifiez l'état du conteneur :
  
-Pour illustrer son utilisation, créez le Rôle **vault** :+<code> 
 +root@debian11:~# docker ps  
 +CONTAINER ID   IMAGE     COMMAND            CREATED         STATUS         PORTS     NAMES 
 +7d948c33b2f4   centos    "sleep infinity"   2 minutes ago   Up 2 minutes             postgresql 
 +</code> 
 + 
 +Ajoutez **trainee** au groupe **docker** afin qu'il puisse gérer les conteneurs puis redevenir l'utilisateur trainee :
  
 <code> <code>
-[trainee@centos8 roles]$ mkdir vault+root@debian11:/home/trainee/.ansible/roles# usermod -aG docker trainee 
 +root@debian11:/home/trainee/.ansible/roles# groups trainee 
 +trainee : trainee cdrom floppy audio dip video plugdev netdev lpadmin scanner vboxusers docker
 </code> </code>
  
-Éditez le fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** :+Redevenez l'utilisateur **trainee** :
  
 <code> <code>
-[trainee@centos8 roles]$ vi /home/trainee/.ansible/roles/group_vars/all.yaml +root@debian11:/home/trainee/.ansible/roles# exit 
-[trainee@centos8 roles]$ cat /home/trainee/.ansible/roles/group_vars/all.yaml +logout 
---- +trainee@debian11:~/.ansible/roles$ groups 
-secretgardezmoisecret+trainee cdrom floppy audio dip video plugdev netdev lpadmin scanner vboxusers 
 +trainee@debian11:~/.ansible/roles$ newgrp docker 
 +trainee@debian11:~/.ansible/roles$ groups 
 +docker cdrom floppy audio dip video plugdev netdev lpadmin scanner vboxusers trainee 
 +trainee@debian11:~/.ansible/roles$ 
 </code> </code>
  
-Modifiez le fichier **/home/trainee/.ansible/roles/playbook.yaml** :+====1.3 - La Connexion à Docker==== 
 + 
 +Créez maintenant le Rôle **docker** :
  
 <code> <code>
-[trainee@centos8 roles]$ vi playbook.yaml +trainee@debian11:~/.ansible/roles$ mkdir docker 
-[trainee@centos8 roles]$ cat playbook.yaml+</code> 
 + 
 +Modifiez ensuite le fichier playbook.yaml : 
 + 
 +<code> 
 +trainee@debian11:~/.ansible/roles$ vi playbook.yaml  
 +trainee@debian11:~/.ansible/roles$ cat playbook.yaml 
 --- ---
 - hosts: all - hosts: all
   tasks:   tasks:
-  debug+    namemessage 
-      msg: "Le secret est {{ secret }}"+      debugmsg="Conteneur - {{ inventory_hostname }} sous {{ansible_distribution}}" 
 +</code> 
 + 
 +Modifiez le fichier **inventory** : 
 + 
 +<code> 
 +trainee@debian11:~/.ansible/roles$ cp inventory inventory.old 
 +trainee@debian11:~/.ansible/roles$ vi inventory 
 +trainee@debian11:~/.ansible/roles$ cat inventory 
 +postgresql ansible_connection=docker 
 +</code> 
 + 
 +Supprimez le fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** : 
 + 
 +<code> 
 +trainee@debian11:~/.ansible/roles$ rm -rf /home/trainee/.ansible/roles/group_vars/all.yaml
 </code> </code>
  
Ligne 400: Ligne 366:
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost+trainee@debian11:~/.ansible/roles$ ansible-playbook -i inventory playbook.yaml
  
-PLAY [all] *******************************************************************************************************************************************************************************************************+PLAY [all] ***************************************************************************************************************************************************************************************************
  
-TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* +TASK [Gathering Facts] *************************************************************************************************************************************************************************************** 
-ok: [localhost]+ok: [postgresql]
  
-TASK [debug***************************************************************************************************************************************************************************************************** +TASK [message] *********************************************************************************************************************************************************************************************** 
-ok: [localhost] => { +ok: [postgresql] => { 
-    "msg": "Le secret est gardezmoisecret"+    "msg": "Conteneur - postgresql sous CentOS"
 } }
  
-PLAY RECAP ******************************************************************************************************************************************************************************************************* +PLAY RECAP *************************************************************************************************************************************************************************************************** 
-localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0+postgresql                 : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
 </code> </code>
  
-<WRAP center round important 60%> +=====LAB #2 - Préparer Windows 10=====
-**Important** : L'exécution démontre que la variable **secret** est bien lue. +
-</WRAP>+
  
-====2.1 - Crypter le Fichier====+Ansible est capable de travailler avec les versions de Windows(tm) suivantes :
  
-Cryptez maintenant le fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** en utilisant la commande **ansible-vault** :+  Windows(tm) 7,  
 +  Windows(tm) 8.1,  
 +  Windowst(tm) 10, 
 +  Windowst(tm) 11, 
 +  Windows(tm) Server 2008,  
 +  Windows(tm) Server 2008 R2,  
 +  Wondows(tm) Server 2012,  
 +  Windows(tm) Server 2012 R2,  
 +  * Windows(tm) Server 2016,  
 +  * Windows(tm) Server 2019, 
 +  * Windows(tm) Server 2022.
  
-<code> +Ansible nécessite sur chaque hôte :
-[trainee@centos8 roles]$ ansible-vault encrypt group_vars/all.yaml +
-New Vault passwordfenestros +
-Confirm New Vault password: fenestros +
-Encryption successful +
-[trainee@centos8 roles]$  +
-</code>+
  
-<WRAP center round important 60%> +  * PowerShell 3.0 ou supérieur 
-**Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. +  Au moins .NET 4.0.
-</WRAP>+
  
-<WRAP center round important 60%> +====2.1 Mettre à Jour PowerShell et .NET====
-**Important** : Notez que le mot de passe est pour la commande **ansible-vault** et non pas uniquement pour l'action de cryptage en cours. +
-</WRAP>+
  
-Constatez maintenant le contenu du fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** :+Afin de mettre à jour les versions de PowerShell et .NET, Ansible fournit un script appelé **Upgrade-PowerShell.ps1**. Exécutez PowerShell en tant qu'Administrateur :
  
 <code> <code>
-[trainee@centos8 roles]$ cat /home/trainee/.ansible/roles/group_vars/all.yaml +Windows PowerShell 
-$ANSIBLE_VAULT;1.1;AES256 +Copyright (C) Microsoft Corporation. Tous droits réservés. 
-33343664333931323331346338346439613439633633396262393733663463363438663163383761 + 
-6566653230323032396434356132653262313962633265630a366436666261363933343663623131 +Testez le nouveau système multiplateforme PowerShell https://aka.ms/pscore6 
-63373230663530313864373236316465333464323131643933363664303332336261353732623064 + 
-3538303864633035320a376235333637656534376638613661303765373165383936653336646562 +PS C:\Windows\system32> $url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Upgrade-PowerShell.ps1" 
-31376535333861616165346433306230366231333139323062366432333033386366+PS C:\Windows\system32> $file = "$env:temp\Upgrade-PowerShell.ps1" 
 +PS C:\Windows\system32> $username = "trainee" 
 +PS C:\Windows\system32> $password = "a39dae707d" 
 +PS C:\Windows\system32> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) 
 +PS C:\Windows\system32> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force 
 +PS C:\Windows\system32> &$file -Version 5.1 -Username $username -Password $password -Verbose 
 +COMMENTAIRES : 2019-10-24T09:36:23 - INFO - starting script 
 +COMMENTAIRES : 2019-10-24T09:36:23 - INFO - current and target PS version are the same, no action is required 
 +COMMENTAIRES : 2019-10-24T09:36:23 - INFO - clearing auto logon registry properties
 </code> </code>
  
-Exécutez de nouveau la commande **ansible-playbook** :+Au cas où, vous pouvez enlever l'auto-login de l'administrateur et remettre la politique d'exécution à **Restricted** avec les commandes suivantes :
  
 <code> <code>
-[trainee@centos8 roles]ansible-playbook -i inventory playbook.yaml -l localhost +PS C:\Windows\system32> Set-ExecutionPolicy -ExecutionPolicy Restricted -Force 
- +PS C:\Windows\system32> $reg_winlogon_path = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" 
-PLAY [all] ******************************************************************************************************************************************************************************************************* +PS C:\Windows\system32> Set-ItemProperty -Path $reg_winlogon_path -Name AutoAdminLogon -Value 0 
-ERROR! Attempting to decrypt but no vault secrets found+PS C:\Windows\system32> Remove-ItemProperty -Path $reg_winlogon_path -Name DefaultUserName -ErrorAction SilentlyContinue 
 +PS C:\Windows\system32> Remove-ItemProperty -Path $reg_winlogon_path -Name DefaultPassword -ErrorAction SilentlyContinue 
 +PS C:\Windows\system32>
 </code> </code>
  
-<WRAP center round important 60%> +====2.2 - Configurer WinRM====
-**Important** : Notez l'erreur due au fait que le fichier a été crypté. +
-</WRAP>+
  
-Pour indiquer à la commande **ansible-playbook** que le fichier qui doit être lu soit cryptéutilisez l'option **--ask-vault-pass** :+Pour mettre en place un **listener** WinRM en HTTP et un **listener** WinRM en HTTPScréer un certificat auto-signé et activer l'authentification de base sur le service WinRM, utilisez le script **ConfigureRemotingForAnsible.ps1** :
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost+PS C:\Windows\system32> $url = "https://raw.githubusercontent.com/AlbanAndrieu/ansible-windows/master/files/ConfigureRemotingForAnsible.ps1" 
 +PS C:\Windows\system32> $file = "$env:temp\ConfigureRemotingForAnsible.ps1" 
 +PS C:\Windows\system32> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) 
 +PS C:\Windows\system32> powershell.exe -ExecutionPolicy ByPass -File $file 
 +Self-signed SSL certificate generated; thumbprint: 17502EEEAC259F4C76D0F199A4B803E94E980CAD
  
-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] *******************************************************************************************************************************************************************************************************+wxf                 : http://schemas.xmlsoap.org/ws/2004/09/transfer 
 +a                   : http://schemas.xmlsoap.org/ws/2004/08/addressing 
 +w                   : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd 
 +lang                : fr-FR 
 +Address             : http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous 
 +ReferenceParameters : ReferenceParameters
  
-TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* +Ok.
-ok: [localhost]+
  
-TASK [debug] ***************************************************************************************************************************************************************************************************** 
-ok: [localhost] => { 
-    "msg": "Le secret est gardezmoisecret" 
-} 
  
-PLAY RECAP ******************************************************************************************************************************************************************************************************* + 
-localhost                  ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    +PS C:\Windows\system32>
 </code> </code>
  
-<WRAP center round important 60%> +====2.3 - Consulter les Informations sur WinRM====
-**Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. +
-</WRAP>+
  
-====2.2 - Editer le Fichier==== +Pour voir la liste des **listeners** ainsi créés, utilisez la commande suivante :
- +
-Pour éditer le fichier, utilisez la sous-commande **edit** de la commande **ansible-vault** :+
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-vault edit group_vars/all.yaml +PS C:\Windows\system32> winrm enumerate winrm/config/Listener 
-Vault password: fenestros +Listener 
-</code>+    Address = * 
 +    Transport = HTTP 
 +    Port = 5985 
 +    Hostname 
 +    Enabled = true 
 +    URLPrefix = wsman 
 +    CertificateThumbprint 
 +    ListeningOn = 10.0.2.58, 10.29.0.34, 127.0.0.1, ::1
  
-<WRAP center round important 60%> +Listener 
-**Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. +    Address = 
-</WRAP>+    Transport = HTTPS 
 +    Port = 5986 
 +    Hostname = DESKTOP-1OV5NMP 
 +    Enabled = true 
 +    URLPrefix = wsman 
 +    CertificateThumbprint = 17502EEEAC259F4C76D0F199A4B803E94E980CAD 
 +    ListeningOn = 10.0.2.58, 10.29.0.34, 127.0.0.1, ::1
  
-Le fichier est chargé en mémoire pour édition : +PS C:\Windows\system32>
- +
-<code> +
---- +
-secret: gardezlesecret +
-~                                                                                                                                                                                                                  +
-~                                                                                                                                                                                                                  +
-~                                                                                                                                                                                                                                                                                                              +
-~                                                                                                                                                                                                                  +
-~                                                                                                                                                                                                                  +
-~                                                                                                                                                                                                                  +
-~                                                                                                                                                                                                                  +
-~                                                                                                                                                                                                                  +
--- INSERT --+
 </code> </code>
  
-Modifiez le secret et sauvegardez le fichier :+Pour obtenir les informations concernant le certificat, exécutez les commandes suivantes en remplacant le contenu de $thumbprint avec la valeur que vous avez obtenue :
  
 <code> <code>
---- +PS C:\Windows\system32> $thumbprint = "17502EEEAC259F4C76D0F199A4B803E94E980CAD" 
-secretgardezlesecret +PS C:\Windows\system32> Get-ChildItem -Path cert:\LocalMachine\My -Recurse | Where-Object { $_.Thumbprint -eq $thumbprint } | Select-Object * 
-~                                                                                                                                                                                                                  + 
-~                                                                                                                                                                                                                  + 
-~                                                                                                                                                                                                                                                                                                              +PSPath                   Microsoft.PowerShell.Security\Certificate::LocalMachine\My\17502EEEAC259F4C76D0F199A4B803E94 
-~                                                                                                                                                                                                                  +                           E980CAD 
-~                                                                                                                                                                                                                  +PSParentPath             : Microsoft.PowerShell.Security\Certificate::LocalMachine\My 
-~                                                                                                                                                                                                                  +PSChildName              : 17502EEEAC259F4C76D0F199A4B803E94E980CAD 
-~                                                                                                                                                                                                                  +PSDrive                  : Cert 
-~                                                                                                                                                                                                                  +PSProvider               : Microsoft.PowerShell.Security\Certificate 
-:x +PSIsContainer            : False 
-</code>+EnhancedKeyUsageList     : {Authentification du serveur (1.3.6.1.5.5.7.3.1)} 
 +DnsNameList              : {DESKTOP-1OV5NMP, DESKTOP-1OV5NMP} 
 +SendAsTrustedIssuer      False 
 +EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty 
 +EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty 
 +PolicyId                 : 
 +Archived                 : False 
 +Extensions               : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, 
 +                           System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} 
 +FriendlyName             : 
 +IssuerName               : System.Security.Cryptography.X509Certificates.X500DistinguishedName 
 +NotAfter                 : 22/10/2022 11:45:21 
 +NotBefore                : 23/10/2019 11:45:21 
 +HasPrivateKey            : True 
 +PrivateKey               : System.Security.Cryptography.RSACryptoServiceProvider 
 +PublicKey                : System.Security.Cryptography.X509Certificates.PublicKey 
 +RawData                  : {48, 130, 5, 49...} 
 +SerialNumber             : 73F2EADFBABB86B7438B30B157A1C3FB 
 +SubjectName              : System.Security.Cryptography.X509Certificates.X500DistinguishedName 
 +SignatureAlgorithm       : System.Security.Cryptography.Oid 
 +Thumbprint               : 17502EEEAC259F4C76D0F199A4B803E94E980CAD 
 +Version                  : 3 
 +Handle                   : 2829331536176 
 +Issuer                   : CN=DESKTOP-1OV5NMP 
 +Subject                  : CN=DESKTOP-1OV5NMP 
  
-Constatez que le contenu du fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** est toujours crypté : 
  
-<code> +PS C:\Windows\system32>
-[trainee@centos8 roles]$ cat /home/trainee/.ansible/roles/group_vars/all.yaml +
-$ANSIBLE_VAULT;1.1;AES256 +
-36633861376466313363373336643832646663666334633931663262666361306236386232316461 +
-3331633863386666626230663038653136653830303465660a353337316634363465663962336365 +
-61396430313965653666333738376663336139613566636437353935653232306264336235333538 +
-6439366539653436310a666361313237623137666634663439343132393532623962353163303364 +
-37626635363832333934363930383265313932663230356234343235643935353535+
 </code> </code>
  
-Exécutez de nouveau la commande **ansible-playbook** avec l'option **--ask-vault-pass** :+Dernièrement pour obtenir des informations concernant le service, exécutez les deux commandes suivantes :
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost --ask-vault-pass +PS C:\Windows\system32> winrm get winrm/config/Service 
-Vault passwordfenestros+Service 
 +    RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD) 
 +    MaxConcurrentOperations = 4294967295 
 +    MaxConcurrentOperationsPerUser = 1500 
 +    EnumerationTimeoutms = 240000 
 +    MaxConnections = 300 
 +    MaxPacketRetrievalTimeSeconds = 120 
 +    AllowUnencrypted = false 
 +    Auth 
 +        Basic = true 
 +        Kerberos = true 
 +        Negotiate = true 
 +        Certificate = false 
 +        CredSSP = false 
 +        CbtHardeningLevel = Relaxed 
 +    DefaultPorts 
 +        HTTP = 5985 
 +        HTTPS = 5986 
 +    IPv4Filter = * 
 +    IPv6Filter = * 
 +    EnableCompatibilityHttpListener = false 
 +    EnableCompatibilityHttpsListener = false 
 +    CertificateThumbprint 
 +    AllowRemoteAccess = true
  
-PLAY [all] *******************************************************************************************************************************************************************************************************+PS C:\Windows\system32> winrm get winrm/config/Winrs 
 +Winrs 
 +    AllowRemoteShellAccess = true 
 +    IdleTimeout = 7200000 
 +    MaxConcurrentUsers = 2147483647 
 +    MaxShellRunTime = 2147483647 
 +    MaxProcessesPerShell = 2147483647 
 +    MaxMemoryPerShellMB = 2147483647 
 +    MaxShellsPerUser = 2147483647
  
-TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* +PS C:\Windows\system32>
-ok[localhost] +
- +
-TASK [debug] ***************************************************************************************************************************************************************************************************** +
-ok: [localhost] =+
-    "msg": "Le secret est gardezlesecret" +
-+
- +
-PLAY RECAP ******************************************************************************************************************************************************************************************************* +
-localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0+
 </code> </code>
  
-<WRAP center round important 60%> +====2.4 - Créer un Utilisateur Local pour Ansible====
-**Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. +
-</WRAP>+
  
-====2.3 - Décrypter le Fichier====+Retournez à l'accueil de Guacamole et connectez-vous à la machine virtuelle **Windows_10.0.2.58_VNC**.
  
-Il est possible de décrypter le fichier en utilisant la sous-commande **decrypt** de la commande **ansible-vault** :+Lancez PowerShell en tant que l'administrateur et exécutez ensuite la commande suivante :
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-vault decrypt group_vars/all.yaml +PS C:\Windows\system32> winrm configSDDL default 
-Vault passwordfenestros +Service 
-Decryption successful+    RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)(A;;GXGR;;;S-1-5-21-1664865965-3091009943-3054596003-1002)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD) 
 +    MaxConcurrentOperations = 4294967295 
 +    MaxConcurrentOperationsPerUser = 1500 
 +    EnumerationTimeoutms = 240000 
 +    MaxConnections = 300 
 +    MaxPacketRetrievalTimeSeconds = 120 
 +    AllowUnencrypted = false 
 +    Auth 
 +        Basic = true 
 +        Kerberos = true 
 +        Negotiate = true 
 +        Certificate = false 
 +        CredSSP = false 
 +        CbtHardeningLevel = Relaxed 
 +    DefaultPorts 
 +        HTTP = 5985 
 +        HTTPS = 5986 
 +    IPv4Filter = * 
 +    IPv6Filter = * 
 +    EnableCompatibilityHttpListener = false 
 +    EnableCompatibilityHttpsListener = false 
 +    CertificateThumbprint 
 +    AllowRemoteAccess = true 
 + 
 +PS C:\Windows\system32>
 </code> </code>
  
-<WRAP center round important 60%> +Dans la fenêtre **Autorisations pour Default**, ajoutez l'utilisateur pour Ansible ( trainee ) et accordez lui les permissions **Exécution** en plus des permissions **Lecture** :
-**Important** : Notez que le mot de passe **fenestros** ne sera pas en clair. +
-</WRAP>+
  
-Constatez que le contenu du fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** n'est plus crypté :+{{ :elearning:workbooks:debian:6:avance:l130:win10.png?direct&600 |}}
  
-<code> +=====LAB #3 Préparer le Contrôleur Ansible=====
-[trainee@centos8 roles]$ cat /home/trainee/.ansible/roles/group_vars/all.yaml +
---- +
-secret: gardezlesecret +
-</code>+
  
-====2.Utilisation de Mots de Passe Aléatoires====+====3.Installer pywinrm====
  
-Installez le paquet **pwgen** :+Sous Debian 11, le paquet **python3-winrm** est déjà installé. 
 + 
 +Modifiez le fichier **/etc/hosts** :
  
 <code> <code>
-[trainee@centos8 roles]$ su -+trainee@debian11:~/.ansible/roles$ su -
 Password: fenestros Password: fenestros
-[root@centos8 ~]# 
  
-[root@centos8 ~]dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm +root@debian11:~# vi /etc/hosts
-Last metadata expiration check: 1:30:37 ago on Wed 09 Mar 2022 10:10:01 EST. +
-epel-release-latest-8.noarch.rpm                                                                                                                                                   47 kB/s |  22 kB     00:00     +
-Dependencies resolved. +
-================================================================================================================================================================================================================== +
- Package                                              Architecture                                   Version                                           Repository                                            Size +
-================================================================================================================================================================================================================== +
-Installing: +
- epel-release                                         noarch                                         8-14.el8                                          @commandline                                          22 k+
  
-Transaction Summary +root@debian11:~# cat /etc/hosts 
-================================================================================================================================================================================================================== +127.0.0.      localhost 
-Install  Package+10.0.2.46       debian11.ittraining.loc debian11 
 +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 
 +10.0.2.58 windows10
  
-Total size: 22 k +# The following lines are desirable for IPv6 capable hosts 
-Installed size32 k +::1     localhost ip6-localhost ip6-loopback 
-Is this ok [y/N]y +ff02::1 ip6-allnodes 
-Downloading Packages: +ff02::2 ip6-allrouters 
-Running transaction check +</code>
-Transaction check succeeded. +
-Running transaction test +
-Transaction test succeeded. +
-Running transaction +
-  Preparing                                                                                                                                                                                                 1/1  +
-  Installing       : epel-release-8-14.el8.noarch                                                                                                                                                             1/ +
-  Running scriptletepel-release-8-14.el8.noarch                                                                                                                                                             1/ +
-  Verifying        : epel-release-8-14.el8.noarch                                                                                                                                                             1/1  +
-Installed products updated.+
  
-Installed: +====3.2 Tester la Configuration====
-  epel-release-8-14.el8.noarch                                                                                                                                                                                    +
  
-Complete!+Pour tester la configuration, commencez par modifier le fichier inventory en tant que trainee :
  
-[root@centos8 ~]dnf install pwgen +<code> 
-Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                                    1.1 MB/s |  11 MB     00:09     +root@debian11:~# exit 
-Extra Packages for Enterprise Linux Modular 8 - x86_64                                                                                                                            530 kB/s | 979 kB     00:01     +logout
-Last metadata expiration check: 0:00:01 ago on Wed 09 Mar 2022 11:41:14 EST. +
-Dependencies resolved. +
-================================================================================================================================================================================================================== +
- Package                                          Architecture                                      Version                                                 Repository                                       Size +
-================================================================================================================================================================================================================== +
-Installing: +
- pwgen                                            x86_64                                            2.08-3.el8                                              epel                                             31 k+
  
-Transaction Summary +trainee@debian11:~$ vi inventory
-================================================================================================================================================================================================================== +
-Install  1 Package+
  
-Total download size31 k +trainee@debian11:~$ cat inventory 
-Installed size: 46 k +[windows] 
-Is this ok [y/N]: y+windows10
  
-[root@centos8 ~]# exit +[windows:vars
-logout +ansible_user=trainee 
-[trainee@centos8 roles]$ +ansible_password=a39dae707d 
 +ansible_connection=winrm 
 +ansible_winrm_server_cert_validation=ignore
 </code> </code>
  
-Utilisez maintenant la commande **pwgen** pour générer un mot de passe aléatoire :+Procédez au test :
  
 <code> <code>
-[trainee@centos8 roles]pwgen 16 1 +trainee@debian11:~ansible windows -i inventory -m win_ping 
-di3Be1AiPayeehai+windows10 | SUCCESS => { 
 +    "changed": false, 
 +    "ping": "pong" 
 +}
 </code> </code>
  
-Utilisez pwgen pour créer un mot de passe aléatoire contenu dans un fichier :+=====LAB #4 - Travailler avec Ansible et Windows=====
  
-<code> +====4.1 - Obtenir les Informations sur Windows 10====
-[trainee@centos8 roles]$ pwgen 16 > vault-password+
  
-[trainee@centos8 roles]$ ls +De la même façon qu'avec Linux, il est possible d'utiliser le module **setup** pour obtenir des Facts :
-backend.j2  debug  exemple01.java  geerlingguy.java  group_vars  haproxy  host_vars  inventory  playbook.yaml  tomcat  vault  vault-password+
  
-[trainee@centos8 roles]cat vault-password +<code> 
-oo3aeph5PaiVeiBu+trainee@debian11:~ansible windows -i inventory -m setup 
 +windows10 | SUCCESS => { 
 +    "ansible_facts":
 +        "ansible_architecture": "64 bits", 
 +        "ansible_architecture2": "x86_64", 
 +        "ansible_bios_date": "04/01/2014", 
 +        "ansible_bios_version": "rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org", 
 +        "ansible_date_time":
 +            "date": "2022-03-10", 
 +            "day": "10", 
 +            "epoch": "1646895432,89327", 
 +            "epoch_int": 1646895433, 
 +            "epoch_local": "1646899032,89327", 
 +            "hour": "07", 
 +            "iso8601": "2022-03-10T06:57:12Z", 
 +            "iso8601_basic": "20220310T075712893274", 
 +            "iso8601_basic_short": "20220310T075712", 
 +            "iso8601_micro": "2022-03-10T06:57:12.893274Z", 
 +            "minute": "57", 
 +            "month": "03", 
 +            "second": "12", 
 +            "time": "07:57:12", 
 +            "tz": "Romance Standard Time", 
 +            "tz_offset": "+01:00", 
 +            "weekday": "Thursday", 
 +            "weekday_number": "4", 
 +            "weeknumber": "9", 
 +            "year": "2022" 
 +        }, 
 +        "ansible_distribution": "Microsoft Windows 10 Professionnel", 
 +        "ansible_distribution_major_version": "10", 
 +        "ansible_distribution_version": "10.0.19042.0", 
 +        "ansible_domain": "", 
 +        "ansible_env":
 +            "ALLUSERSPROFILE": "C:\\ProgramData", 
 +            "APPDATA": "C:\\Users\\trainee\\AppData\\Roaming", 
 +            "COMPUTERNAME": "DESKTOP-P0SAHCP", 
 +            "ComSpec": "C:\\Windows\\system32\\cmd.exe", 
 +            "CommonProgramFiles": "C:\\Program Files\\Common Files", 
 +            "CommonProgramFiles(x86)": "C:\\Program Files (x86)\\Common Files", 
 +            "CommonProgramW6432": "C:\\Program Files\\Common Files", 
 +            "DriverData": "C:\\Windows\\System32\\Drivers\\DriverData", 
 +            "HOMEDRIVE": "C:", 
 +            "HOMEPATH": "\\Users\\trainee", 
 +            "LOCALAPPDATA": "C:\\Users\\trainee\\AppData\\Local", 
 +            "LOGONSERVER": "\\\\DESKTOP-P0SAHCP", 
 +            "NUMBER_OF_PROCESSORS": "8", 
 +            "OS": "Windows_NT", 
 +            "OneDrive": "C:\\Users\\trainee\\OneDrive", 
 +            "PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL", 
 +            "PROCESSOR_ARCHITECTURE": "AMD64", 
 +            "PROCESSOR_IDENTIFIER": "Intel64 Family 15 Model 6 Stepping 1, GenuineIntel", 
 +            "PROCESSOR_LEVEL": "15", 
 +            "PROCESSOR_REVISION": "0601", 
 +            "PROMPT": "$P$G", 
 +            "PSExecutionPolicyPreference": "Unrestricted", 
 +            "PSModulePath": "C:\\Users\\trainee\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules", 
 +            "PUBLIC": "C:\\Users\\Public", 
 +            "Path": "C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Users\\trainee\\AppData\\Local\\Microsoft\\WindowsApps", 
 +            "ProgramData": "C:\\ProgramData", 
 +            "ProgramFiles": "C:\\Program Files", 
 +            "ProgramFiles(x86)": "C:\\Program Files (x86)", 
 +            "ProgramW6432": "C:\\Program Files", 
 +            "SystemDrive": "C:", 
 +            "SystemRoot": "C:\\Windows", 
 +            "TEMP": "C:\\Users\\trainee\\AppData\\Local\\Temp", 
 +            "TMP": "C:\\Users\\trainee\\AppData\\Local\\Temp", 
 +            "USERDOMAIN": "DESKTOP-P0SAHCP", 
 +            "USERDOMAIN_ROAMINGPROFILE": "DESKTOP-P0SAHCP", 
 +            "USERNAME": "trainee", 
 +            "USERPROFILE": "C:\\Users\\trainee", 
 +            "windir": "C:\\Windows" 
 +        }, 
 +        "ansible_fqdn": "DESKTOP-P0SAHCP", 
 +        "ansible_hostname": "DESKTOP-P0SAHCP", 
 +        "ansible_interfaces":
 +            { 
 +                "connection_name": "Ethernet 2", 
 +                "default_gateway": "10.0.2.1", 
 +                "dns_domain": null, 
 +                "interface_index": 13, 
 +                "interface_name": "Intel(R) PRO/1000 MT Network Connection", 
 +                "macaddress": "92:E1:64:91:2B:57" 
 +            } 
 +        ], 
 +        "ansible_ip_addresses":
 +            "fe80::1c9:fbad:7f52:9542%13", 
 +            "10.0.2.58" 
 +        ], 
 +        "ansible_kernel": "10.0.19042.0", 
 +        "ansible_lastboot": "2022-03-10 07:13:15Z", 
 +        "ansible_machine_id": "S-1-5-21-309167381-963478272-52300377", 
 +        "ansible_memfree_mb": 14006, 
 +        "ansible_memtotal_mb": 16384, 
 +        "ansible_netbios_name": "DESKTOP-P0SAHCP", 
 +        "ansible_nodename": "DESKTOP-P0SAHCP", 
 +        "ansible_os_family": "Windows", 
 +        "ansible_os_installation_type": "Client", 
 +        "ansible_os_name": "Microsoft Windows 10 Professionnel", 
 +        "ansible_os_product_type": "workstation", 
 +        "ansible_owner_contact": "", 
 +        "ansible_owner_name": "trainee", 
 +        "ansible_pagefilefree_mb": 2432, 
 +        "ansible_pagefiletotal_mb": 2432, 
 +        "ansible_powershell_version": 5, 
 +        "ansible_processor":
 +            "0", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "1", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "2", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "3", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "4", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "5", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "6", 
 +            "GenuineIntel", 
 +            "Common KVM processor", 
 +            "7", 
 +            "GenuineIntel", 
 +            "Common KVM processor" 
 +        ], 
 +        "ansible_processor_cores": 8, 
 +        "ansible_processor_count": 1, 
 +        "ansible_processor_threads_per_core": 1, 
 +        "ansible_processor_vcpus": 8, 
 +        "ansible_product_name": "Standard PC (i440FX + PIIX, 1996)", 
 +        "ansible_product_serial": null, 
 +        "ansible_reboot_pending": true, 
 +        "ansible_swaptotal_mb": 0, 
 +        "ansible_system": "Win32NT", 
 +        "ansible_system_description": "", 
 +        "ansible_system_vendor": "QEMU", 
 +        "ansible_uptime_seconds": 2647, 
 +        "ansible_user_dir": "C:\\Users\\trainee", 
 +        "ansible_user_gecos": "", 
 +        "ansible_user_id": "trainee", 
 +        "ansible_user_sid": "S-1-5-21-309167381-963478272-52300377-1001", 
 +        "ansible_virtualization_role": "guest", 
 +        "ansible_virtualization_type": "kvm", 
 +        "ansible_win_rm_certificate_expires": "2025-03-08 07:34:49", 
 +        "ansible_windows_domain": "WORKGROUP", 
 +        "ansible_windows_domain_member": false, 
 +        "ansible_windows_domain_role": "Stand-alone workstation", 
 +        "gather_subset":
 +            "all" 
 +        ], 
 +        "module_setup": true 
 +    }, 
 +    "changed": false 
 +}
 </code> </code>
  
-Utilisez maintenant le mot de passe aléatoire contenu dans le fichier **vault-password** pour crypter le fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** :+====4.2 Exécutez une Commande====
  
-<code> +Créez le PlayBook **command.yml** :
-[trainee@centos8 roles]$ ansible-vault encrypt group_vars/all.yaml --vault-password-file vault-password +
-Encryption successful +
-</code> +
- +
-Constatez le contenu du fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** :+
  
 <code> <code>
-[trainee@centos8 roles]cat group_vars/all.yaml +trainee@debian11:~vi command.yml 
-$ANSIBLE_VAULT;1.1;AES256 +trainee@debian11:~cat command.yml 
-61326364653334653935643735623863353362333536396638356362376631633732306332316661 +--- 
-6662333436336237346433363637393666623165643438620a343436366136386637343238303063 +- name: ipconfig 
-38383866386631363834623461323334313030623136333334646335626165363263373966373663 +  hosts: windows 
-3137333330653635620a396133346264656335633530353966383930613731626639393631623066 +  tasks: 
-31323331383563373830306331653166326563333135326631363461313666313864+    - name: run ipconfig 
 +      win_command: ipconfig 
 +      register: ipconfig 
 +    - debug: var=ipconfig
 </code> </code>
  
-Exécutez de nouveau la commande **ansible-playbook** avec l'option **--vault-password-file** :+Exécutez le PlayBook :
  
 <code> <code>
-[trainee@centos8 roles]$ ansible-playbook -i inventory playbook.yaml -l localhost --vault-password-file vault-password+trainee@debian11:~$ ansible-playbook command.yml -i inventory
  
-PLAY [all*******************************************************************************************************************************************************************************************************+PLAY [ipconfig] **************************************************************************************************************************************************************************************************
  
 TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
-ok: [localhost]+ok: [windows10] 
 + 
 +TASK [run ipconfig] ********************************************************************************************************************************************************************************************** 
 +changed: [windows10]
  
 TASK [debug] ***************************************************************************************************************************************************************************************************** TASK [debug] *****************************************************************************************************************************************************************************************************
-ok: [localhost] => { +ok: [windows10] => { 
-    "msg": "Le secret est gardezlesecret"+    "ipconfig": 
 +        "changed": true, 
 +        "cmd": "ipconfig", 
 +        "delta": "0:00:00.111976", 
 +        "end": "2022-03-10 07:14:51.164294", 
 +        "failed": false, 
 +        "rc": 0, 
 +        "start": "2022-03-10 07:14:51.052317", 
 +        "stderr": "", 
 +        "stderr_lines": [], 
 +        "stdout": "\r\nConfiguration IP de Windows\r\n\r\n\r\nCarte Ethernet Ethernet 2 :\r\n\r\n   Suffixe DNS propre � la connexion. . . : \r\n   Adresse IPv6 de liaison locale. . . . .: fe80::1c9:fbad:7f52:9542%13\r\n   Adresse IPv4. . . . . . . . . . . . . .: 10.0.2.58\r\n   Masque de sous-r�seau. . . .�. . . . . : 255.255.255.0\r\n   Passerelle par d�faut. . . .�. . . . . : 10.0.2.1\r\n", 
 +        "stdout_lines":
 +            "", 
 +            "Configuration IP de Windows", 
 +            "", 
 +            "", 
 +            "Carte Ethernet Ethernet 2 :", 
 +            "", 
 +            "   Suffixe DNS propre � la connexion. . . : ", 
 +            "   Adresse IPv6 de liaison locale. . . . .: fe80::1c9:fbad:7f52:9542%13", 
 +            "   Adresse IPv4. . . . . . . . . . . . . .: 10.0.2.58", 
 +            "   Masque de sous-r�seau. . . .�. . . . . : 255.255.255.0", 
 +            "   Passerelle par d�faut. . . .�. . . . . : 10.0.2.1" 
 +        ] 
 +    }
 } }
  
 PLAY RECAP ******************************************************************************************************************************************************************************************************* PLAY RECAP *******************************************************************************************************************************************************************************************************
-localhost                  : ok=   changed=   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  +windows10                  : ok=   changed=   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0     
 </code> </code>
  
-=====LAB #3 - Ansible et Docker=====+====4.3 - Exécuter un script PowerShell====
  
-====3.1 - Présentation de Docker==== +Créez un script PowerShell pour démarrer le service Windows Update :
- +
-Docker est une application de virtualisation légère qui utilise des **images** et des **conteneurs**. +
- +
-Une **image** est un paquet exécutable contenant tout ce qu'il est nécessaire afin d'exécuter un logiciel donné, incluant : +
- +
-  * le code +
-  * un runtime +
-  * des bibliothèques, +
-  * des variables d'environnement +
-  * des fichiers de configuration +
- +
-Un **conteneur** est une instance de l'image en cours d'exécution en mémoire. Elle est isolée de l'environnement de l'hôte par défaut mais peut accéder à des fichiers et de ports de l'hôte selon la configuration. +
- +
-Les conteneurs exécutent des applications nativement en utilisant le noyau de la machine hôte. De ce fait les performances d'un conteneur sont supérieures à celles d'une machine virtuelle qui doit passer par un hyperviseur pour accéder aux ressources de la machine hôte : +
- +
-Docker existe en deux versions **Docker-CE** (Docker Community Edition) et **Docker-EE** (Docker Enterprise Edition). Pour consulter les différences entre les deux versions, consultez le lien  **[[https://docs.docker.com/engine/installation/]]**. +
- +
-====3.2 - Installer docker==== +
- +
-Docker n'est pas dans le dépôts de CentOS. Afin de l'installer il convient d'ajouter le dépôt de docker :+
  
 <code> <code>
-[trainee@centos8 roles]$ su - +trainee@debian11:~$ vi script1.ps1 
-Passwordfenestros +trainee@debian11:~$ cat script1.ps1 
-[root@centos8 ~]# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo +Start-Service -Name wuauserv
-Adding repo fromhttps://download.docker.com/linux/centos/docker-ce.repo +
- +
-[root@centos8 ~]# dnf list docker-ce +
-Docker CE Stable - x86_64                                                                                                                                                          83 kB/s |  20 kB     00:00     +
-Last metadata expiration check: 0:00:01 ago on Wed 09 Mar 2022 12:38:58 EST+
-Available Packages +
-docker-ce.x86_64                                                                                 3:20.10.12-3.el8                                                                                 docker-ce-stable+
 </code> </code>
  
-Installez ensuite la dépendance **containerd** de docker-ce :+Créez ensuite un PlayBook appelé **winupdate.yml** :
  
 <code> <code>
-[root@centos8 ~]# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm +trainee@debian11:~$ vi winupdate.yml 
-Last metadata expiration check0:06:03 ago on Wed 09 Mar 2022 12:38:58 EST+trainee@debian11:~$ cat winupdate.yml 
-containerd.io-1.2.10-3.2.el7.x86_64.rpm                                                                                                                                            13 MB/s |  23 MB     00:01     +name"PowerShell script" 
-Dependencies resolved. +  hosts"windows" 
-================================================================================================================================================================================================================== +  gather_facts: "false" 
- Package                                             Architecture                                 Version                                                Repository                                          Size +  tasks: 
-================================================================================================================================================================================================================== +    - name"Windows Update" 
-Installing+      script"script1.ps1"
- containerd.io                                       x86_64                                       1.2.10-3.2.el7                                         @commandline                                        23 M +
-     replacing  runc.x86_64 1.0.2-1.module_el8.5.0+911+f19012f9 +
- +
-Transaction Summary +
-================================================================================================================================================================================================================== +
-Install  1 Package +
- +
-Total size23 M +
-Is this ok [y/N]y+
 </code> </code>
  
-Installez maintenant le paquet **docker-ce** :+Exécutez le PlayBook :
  
 <code> <code>
-[root@centos8 ~]# dnf install docker-ce --nobest -y +trainee@debian11:~$ ansible-playbook winupdate.yml -i inventory
-</code>+
  
-Dernièrement, vérifiez le statut et la version de Docker client et serveur :+PLAY [PowerShell script] *****************************************************************************************************************************************************************************************
  
-<code> +TASK [Windows Update******************************************************************************************************************************************************************************************** 
-[root@centos8 ~]# systemctl status docker +changed[windows10]
-● docker.service - Docker Application Container Engine +
-   Loadedloaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) +
-   Active: activating (start) since Wed 2022-03-09 12:48:23 EST; 51s ago +
-     Docs: https://docs.docker.com +
- Main PID: 59410 (dockerd) +
-    Tasks: 16 +
-   Memory: 37.7M +
-   CGroup: /system.slice/docker.service +
-           └─59410 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock+
  
-Mar 09 12:48:23 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:23.125986199-05:00" level=info msg="Starting up" +PLAY RECAP ******************************************************************************************************************************************************************************************************* 
-Mar 09 12:48:23 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:23.128455293-05:00" level=info msg="parsed scheme: \"unix\"" module=grpc +windows10                  ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
-Mar 09 12:48:23 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:23.128518502-05:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc +
-Mar 09 12:48:23 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:23.128568972-05:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock  <nil>}] <> +
-Mar 09 12:48:23 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:23.128603681-05:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc +
-Mar 09 12:48:28 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:28.105356011-05:00" level=info msg="parsed scheme: \"unix\"" module=grpc +
-Mar 09 12:48:28 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:28.105423457-05:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc +
-Mar 09 12:48:28 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:28.105455755-05:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock  <nil>}] <> +
-Mar 09 12:48:28 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:28.105470536-05:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc +
-Mar 09 12:48:28 centos8.ittraining.loc dockerd[59410]: time="2022-03-09T12:48:28.106759173-05:00" level=error msg="Failed to built-in GetDriver graph btrfs /var/lib/docker" +
-[root@centos8 ~]# docker --version +
-Docker version 20.10.12, build e91ed57 +
-[root@centos8 ~]# docker version +
-Client: Docker Engine - Community +
- Version:           20.10.12 +
- API version:       1.40 +
- Go version:        go1.16.12 +
- Git commit:        e91ed57 +
- Built:             Mon Dec 13 11:45:22 2021 +
- OS/Arch:           linux/amd64 +
- Context:           default +
- Experimental:      true +
- +
-Server: Docker Engine - Community +
- Engine: +
-  Version:          19.03.15 +
-  API version:      1.40 (minimum version 1.12) +
-  Go version:       go1.13.15 +
-  Git commit:       99e3ed8919 +
-  Built:            Sat Jan 30 03:15:19 2021 +
-  OS/Arch:          linux/amd64 +
-  Experimental:     false +
- containerd: +
-  Version:          1.2.10 +
-  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339 +
- runc: +
-  Version:          1.0.0-rc8+dev +
-  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657 +
- docker-init: +
-  Version:          0.18.0 +
-  GitCommit:        fec3683+
 </code> </code>
  
-<WRAP center round important> +====4.4 Installer un Logiciel avec Chocolatey====
-**Important** Docker est composé de trois éléments : un serveur, un client et un ou plusieurs **Repositories** ou Dépôts en français. +
-</WRAP>+
  
-Démarrez un conteneur dénommé **postgresql** en mode détaché à partir d'une image **CentOS** :+**[[https://chocolatey.org/|Chocolatey]]** est un gestionnaire de paquets pour Windows(tm). 
 + 
 +Créez le PlayBook **firefox.yml** :
  
 <code> <code>
-[root@centos8 ~]# docker run ---name postgresql centos sleep infinity +trainee@debian11:~$ vi firefox.yml 
-Unable to find image 'centos:latest' locally +trainee@debian11:~$ cat firefox.yml 
-latestPulling from library/centos +--
-a1d0c7532777Pull complete  +- name: Install Firefox using Chocolatey 
-Digestsha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 +  hostsall 
-StatusDownloaded newer image for centos:latest +  tasks
-1028e25f81d14d685678794902cd599aa618eb283d80e274526d71ec9708e69d+    - nameInstall Firefox 
 +      win_chocolatey
 +        namefirefox 
 +        state: present
 </code> </code>
  
-Vérifiez que le conteneur fonctionne :+Exécutez le PlayBook :
  
 <code> <code>
-[root@centos8 ~]# docker ps -+trainee@debian11:~$ ansible-playbook firefox.yml -i inventory
-CONTAINER ID   IMAGE     COMMAND            CREATED              STATUS          PORTS     NAMES +
-1028e25f81d1   centos    "sleep infinity"   About a minute ago   Up 30 seconds             postgresql +
-[root@centos8 ~]# exit +
-logout +
-[trainee@centos8 roles]$ +
-</code>+
  
-====3.3 - La Connexion à Docker====+PLAY [Install Firefox using Chocolatey] **************************************************************************************************************************************************************************
  
-Créez maintenant le Rôle **docker** :+TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* 
 +ok[windows10]
  
-<code> +TASK [Install Firefox] ******************************************************************************************************************************************************************************************* 
-trainee@ansible:~/.ansible/roles$ mkdir docker+[WARNING]Chocolatey was missing from this system, so it was installed during this task run. 
 +changed: [windows10] 
 + 
 +PLAY RECAP ******************************************************************************************************************************************************************************************************* 
 +windows10                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
 </code> </code>
  
-Modifiez ensuite le fichier playbook.yaml :+====4.5 - Créer un Utilisateur Local==== 
 + 
 +Créez le PlayBook **user.yml** :
  
 <code> <code>
-[trainee@centos8 roles]$ vi playbook.yaml  +trainee@debian11:~$ vi users.yml 
-[trainee@centos8 roles]$ cat playbook.yaml +trainee@debian11:~$ cat users.yml
 --- ---
-- hosts: all+name: Create a user 
 +  hosts: windows
   tasks:   tasks:
-    - name: message +    - name: Create Jean 
-      debugmsg="Conteneur {{ inventory_hostname }} sous {{ansible_distribution}}"+      win_user: 
 +        name: jean 
 +        password: P@$$w0rd 
 +        state: present 
 +        groups: 
 +          utilisateurs
 </code> </code>
  
-Modifiez le fichier **inventory** :+Exécutez le PlayBook :
  
 <code> <code>
-[trainee@centos8 roles]cp inventory inventory.old +trainee@debian11:~ansible-playbook users.yml -i inventory
-[trainee@centos8 roles]$ vi inventory +
-[trainee@centos8 roles]$ cat inventory +
-postgresql ansible_connection=docker +
-</code>+
  
-Supprimez le fichier **/home/trainee/.ansible/roles/group_vars/all.yaml** : +PLAY [Create a user] *********************************************************************************************************************************************************************************************
- +
-<code> +
-[trainee@centos8 roles]$ rm -rf /home/trainee/.ansible/roles/group_vars/all.yaml +
-</code> +
- +
-Exécutez la commande **ansible-playbook** en tant que **root** : +
- +
-<code> +
-[root@centos8 roles]# ansible-playbook -i inventory playbook.yaml +
-[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)].  +
-This feature will be removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. +
- +
-PLAY [all*******************************************************************************************************************************************************************************************************+
  
 TASK [Gathering Facts] ******************************************************************************************************************************************************************************************* TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
-ok: [postgresql]+ok: [windows10]
  
-TASK [message*************************************************************************************************************************************************************************************************** +TASK [Create Jean] *********************************************************************************************************************************************************************************************** 
-ok: [postgresql=> { +changed: [windows10]
-    "msg": "Conteneur - postgresql sous CentOS" +
-}+
  
 PLAY RECAP ******************************************************************************************************************************************************************************************************* PLAY RECAP *******************************************************************************************************************************************************************************************************
-postgresql                 : ok=2    changed=   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    +windows10                  : ok=2    changed=   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
 </code> </code>
 +
 +Vérifiez que le compte a été créé :
 +
 +{{ :elearning:workbooks:debian:6:avance:l130:win101.png?direct&600 |}}
  
 ----- -----
  
-Copyright © 2022 Hugh Norris.+Copyright © 2024 Hugh Norris.
Menu