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:l705 [2023/09/22 13:07] adminelearning:workbooks:centos:8:lcf900:l705 [2024/06/10 11:46] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version - **2023.01**+Version - **2024.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 32: Ligne 32:
       * 3.7 - Exécution du Playbook       * 3.7 - Exécution du Playbook
       * 3.8 - Vérification des Modifications       * 3.8 - Vérification des Modifications
-    * LAB #4 - Gestion du Tâches+    * LAB #4 - Gestion des Tâches 
 +      * 4.1 - Création d'un Cron Job 
 +      * 4.2 - Création d'un AT Job
  
 =====LAB #1 - Gestion des Utilisateurs et des Mots de Passe===== =====LAB #1 - Gestion des Utilisateurs et des Mots de Passe=====
Ligne 44: Ligne 46:
 Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
 Warning: Permanently added '10.0.2.45' (ECDSA) to the list of known hosts. Warning: Permanently added '10.0.2.45' (ECDSA) to the list of known hosts.
-trainee@10.0.2.45's password: +trainee@10.0.2.45's password: trainee
 Activate the web console with: systemctl enable --now cockpit.socket Activate the web console with: systemctl enable --now cockpit.socket
  
 Last login: Thu Feb 16 16:46:22 2023 from 10.0.2.1 Last login: Thu Feb 16 16:46:22 2023 from 10.0.2.1
 +
 [trainee@centos8 ~]$ ls -la | grep .ssh [trainee@centos8 ~]$ ls -la | grep .ssh
 +
 [trainee@centos8 ~]$ mkdir .ssh [trainee@centos8 ~]$ mkdir .ssh
 +
 [trainee@centos8 ~]$ chmod 700 .ssh [trainee@centos8 ~]$ chmod 700 .ssh
 +
 [trainee@centos8 ~]$ ls -la | grep .ssh [trainee@centos8 ~]$ ls -la | grep .ssh
 drwx------.  2 trainee trainee      4096 Sep 20 09:50 .ssh drwx------.  2 trainee trainee      4096 Sep 20 09:50 .ssh
 +
 [trainee@centos8 ~]$ exit [trainee@centos8 ~]$ exit
 logout logout
Ligne 64: Ligne 71:
 <code> <code>
 trainee@debian11:~$ scp .ssh/authorized_keys trainee@10.0.2.45:/home/trainee/.ssh/authorized_keys trainee@debian11:~$ scp .ssh/authorized_keys trainee@10.0.2.45:/home/trainee/.ssh/authorized_keys
-trainee@10.0.2.45's password: +trainee@10.0.2.45's password: trainee
 authorized_keys                                     100%  846     1.3MB/  00:00  authorized_keys                                     100%  846     1.3MB/  00:00 
 </code> </code>
Ligne 81: Ligne 88:
  
 <code> <code>
 +[trainee@centos8 ~]$ su -
 +Password: fenestros
 +
 [root@centos8 ~]# vi /etc/sudoers.d/ansible_users [root@centos8 ~]# vi /etc/sudoers.d/ansible_users
 +
 [root@centos8 ~]# cat /etc/sudoers.d/ansible_users [root@centos8 ~]# cat /etc/sudoers.d/ansible_users
 trainee ALL=(ALL)       NOPASSWD:ALL trainee ALL=(ALL)       NOPASSWD:ALL
 +
 [root@centos8 ~]# chmod 440 /etc/sudoers.d/ansible_users [root@centos8 ~]# chmod 440 /etc/sudoers.d/ansible_users
 +
 [root@centos8 ~]# ls -l /etc/sudoers.d/ansible_users [root@centos8 ~]# ls -l /etc/sudoers.d/ansible_users
 -r--r-----. 1 root root 37 Sep 20 09:56 /etc/sudoers.d/ansible_users -r--r-----. 1 root root 37 Sep 20 09:56 /etc/sudoers.d/ansible_users
Ligne 94: Ligne 107:
 [root@centos8 ~]# exit [root@centos8 ~]# exit
 logout logout
 +
 [trainee@centos8 ~]$ sudo su - [trainee@centos8 ~]$ sudo su -
 +
 [root@centos8 ~]# exit [root@centos8 ~]# exit
 logout logout
 +
 [trainee@centos8 ~]$ exit [trainee@centos8 ~]$ exit
 logout logout
 Connection to 10.0.2.45 closed. Connection to 10.0.2.45 closed.
 +
 trainee@debian11:~$ trainee@debian11:~$
 </code> </code>
Ligne 135: Ligne 152:
 </code> </code>
  
-Créez maintenant les répertoires **hots_vars** et **group_vars** dans le rôle **users** :+Créez maintenant les répertoires **host_vars** et **group_vars** dans le rôle **users** :
  
 <code> <code>
 trainee@debian11:~$ mkdir -p ansible/users/host_vars trainee@debian11:~$ mkdir -p ansible/users/host_vars
-trainee@debian11:~$ mkdir -p ansible/users/group_vars+ 
 +trainee@debian11:~$ mkdir ansible/users/group_vars
 </code> </code>
  
Ligne 146: Ligne 164:
 <code> <code>
 trainee@debian11:~$ cd ansible/users/ trainee@debian11:~$ cd ansible/users/
 +
 trainee@debian11:~/ansible/users$ trainee@debian11:~/ansible/users$
 </code> </code>
  
-Constatez le fichier de configuration d'ansible actuellement utilisé :+Constatez le fichier de configuration d'Ansible actuellement utilisé :
  
 <code> <code>
Ligne 165: Ligne 184:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi ansible.cfg trainee@debian11:~/ansible/users$ vi ansible.cfg
 +
 trainee@debian11:~/ansible/users$ cat ansible.cfg trainee@debian11:~/ansible/users$ cat ansible.cfg
 [defaults] [defaults]
Ligne 291: Ligne 311:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi user1.yml trainee@debian11:~/ansible/users$ vi user1.yml
 +
 trainee@debian11:~/ansible/users$ cat user1.yml trainee@debian11:~/ansible/users$ cat user1.yml
 --- ---
Ligne 339: Ligne 360:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi user1.yml  trainee@debian11:~/ansible/users$ vi user1.yml 
 +
 trainee@debian11:~/ansible/users$ cat user1.yml  trainee@debian11:~/ansible/users$ cat user1.yml 
 --- ---
Ligne 377: Ligne 399:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi user1.yml  trainee@debian11:~/ansible/users$ vi user1.yml 
 +
 trainee@debian11:~/ansible/users$ cat user1.yml  trainee@debian11:~/ansible/users$ cat user1.yml 
 --- ---
Ligne 393: Ligne 416:
  
 <WRAP center round important 50%> <WRAP center round important 50%>
-**Important** : Notez l'utilisation de **"{{ item }}"** et **loop** qui permettent l'exécution d'un boucle pour la création des trois utilisateurs. DAns le cas où la version d'ansible < 2.5, il convient de remplacer **loop** avec **with_items**.+**Important** : Notez l'utilisation de **"{{ item }}"** et **loop** qui permettent l'exécution d'un boucle pour la création des trois utilisateurs. Dans le cas où la version d'Ansible < 2.5, il convient de remplacer **loop** avec **with_items**.
 </WRAP> </WRAP>
  
Ligne 450: Ligne 473:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi user1.yml  trainee@debian11:~/ansible/users$ vi user1.yml 
 +
 trainee@debian11:~/ansible/users$ cat user1.yml  trainee@debian11:~/ansible/users$ cat user1.yml 
 --- ---
Ligne 492: Ligne 516:
 10.0.2.45 | FAILED | rc=2 >> 10.0.2.45 | FAILED | rc=2 >>
 non-zero return code non-zero return code
 +
 trainee@debian11:~/ansible/users$ ansible all -m command -a 'ls -l /home' trainee@debian11:~/ansible/users$ ansible all -m command -a 'ls -l /home'
 10.0.2.45 | CHANGED | rc=0 >> 10.0.2.45 | CHANGED | rc=0 >>
Ligne 505: Ligne 530:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi user1.yml  trainee@debian11:~/ansible/users$ vi user1.yml 
 +
 trainee@debian11:~/ansible/users$ cat user1.yml  trainee@debian11:~/ansible/users$ cat user1.yml 
 --- ---
Ligne 549: Ligne 575:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi user1.yml  trainee@debian11:~/ansible/users$ vi user1.yml 
 +
 trainee@debian11:~/ansible/users$ cat user1.yml  trainee@debian11:~/ansible/users$ cat user1.yml 
 --- ---
Ligne 572: Ligne 599:
  
 <WRAP center round important 50%> <WRAP center round important 50%>
-**Important** : Notez la création de deux tâches : **Create User Account** et **Delete User Account**. L'exécution de la tâche est conditionnée par la valeur de la variable **user_create** qui sera passée sur la ligne de commande lors de l’exécution du playbook. Notez que le mot de passe **trainee** est hashé grâce à l'utilisation de **password_hash('algorithme', 'salt')** où salt est du texte aléatoire. Dernièrement **update_password: on_create** implique que le mot de passe sera créé pour l'utilisateur spécifié par la valeur de la variable **user_name** uniquement lors de sa création.+**Important** : Notez la création de deux tâches : **Create User Account** et **Delete User Account**. L'exécution de la tâche est conditionnée par la valeur de la variable **user_create** qui sera passée sur la ligne de commande lors de l’exécution du playbook. Notez que le mot de passe **trainee** est haché grâce à l'utilisation de **password_hash('algorithme', 'salt')** où salt est du texte aléatoire. Dernièrement **update_password: on_create** implique que le mot de passe sera créé pour l'utilisateur spécifié par la valeur de la variable **user_name** uniquement lors de sa création.
 </WRAP>       </WRAP>      
  
Ligne 683: Ligne 710:
 [devops@centos8 ~]$ whoami [devops@centos8 ~]$ whoami
 devops devops
 +
 [devops@centos8 ~]$ exit [devops@centos8 ~]$ exit
 logout logout
Ligne 696: Ligne 724:
 <code> <code>
 trainee@debian11:~/ansible/users$ vi ssh.yml trainee@debian11:~/ansible/users$ vi ssh.yml
 +
 trainee@debian11:~/ansible/users$ cat ssh.yml trainee@debian11:~/ansible/users$ cat ssh.yml
 --- ---
Ligne 797: Ligne 826:
 <code> <code>
 trainee@debian11:~/ansible/users$ cd .. trainee@debian11:~/ansible/users$ cd ..
 +
 trainee@debian11:~/ansible$ mkdir storage trainee@debian11:~/ansible$ mkdir storage
 </code> </code>
Ligne 804: Ligne 834:
 <code> <code>
 trainee@debian11:~/ansible$ cp users/{inventory,ansible.cfg} storage/ trainee@debian11:~/ansible$ cp users/{inventory,ansible.cfg} storage/
 +
 trainee@debian11:~/ansible$ cd storage trainee@debian11:~/ansible$ cd storage
 +
 trainee@debian11:~/ansible/storage$ ls trainee@debian11:~/ansible/storage$ ls
 ansible.cfg  inventory ansible.cfg  inventory
 </code> </code>
  
-Consultez ensuite l'organisation des disques et des partitions de la VM centos8 :+Consultez ensuite l'organisation des disques et des partitions de la VM **CentOS_8** :
  
 <code> <code>
Ligne 837: Ligne 869:
 <code> <code>
 trainee@debian11:~/ansible/storage$ vi storage.yml trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 trainee@debian11:~/ansible/storage$ cat storage.yml trainee@debian11:~/ansible/storage$ cat storage.yml
 --- ---
Ligne 868: Ligne 901:
 ====3.3 - Création des VG et LV==== ====3.3 - Création des VG et LV====
  
-Editez le fichier **storage.yml** :+Éditez le fichier **storage.yml** :
  
 <code> <code>
 trainee@debian11:~/ansible/storage$ vi storage.yml trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 trainee@debian11:~/ansible/storage$ cat storage.yml  trainee@debian11:~/ansible/storage$ cat storage.yml 
 --- ---
Ligne 910: Ligne 944:
  
 <WRAP center round important 50%> <WRAP center round important 50%>
-**Important** : Notez l'utilisation du module **lvg** pour créer le groupe de volumes **vg1** qui utilise le volume physique **/dev/sdb2**. L'exécution de la commande **pvcreate** est accomplie par l'entrée **pvs**. Notez ensuite l'utilisation du module **lvol** pour créer le volume logique **lv1**. La taille est fixée à 100% de la taille disponible. L'entrée **shrink: false** indique que la taille du voliume ne peut pas être réduite.+**Important** : Notez l'utilisation du module **lvg** pour créer le groupe de volumes **vg1** qui utilise le volume physique **/dev/sdb2**. L'exécution de la commande **pvcreate** est accomplie par l'entrée **pvs**. Notez ensuite l'utilisation du module **lvol** pour créer le volume logique **lv1**. La taille est fixée à 100% de la taille disponible. L'entrée **shrink: false** indique que la taille du volume ne peut pas être réduite.
 </WRAP> </WRAP>
  
 ====3.4 - Création des Filesystems==== ====3.4 - Création des Filesystems====
  
-Editez de nouveau le fichier **storage.yml** :+Éditez de nouveau le fichier **storage.yml** :
  
 <code> <code>
 trainee@debian11:~/ansible/storage$ vi storage.yml trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 trainee@debian11:~/ansible/storage$ cat storage.yml  trainee@debian11:~/ansible/storage$ cat storage.yml 
 --- ---
Ligne 972: Ligne 1007:
 ====3.5 - Création des Points de Montage==== ====3.5 - Création des Points de Montage====
  
-Editez ensuite le fichier **storage.yml** :+Éditez ensuite le fichier **storage.yml** :
  
 <code> <code>
Ligne 1038: Ligne 1073:
 ====3.6 - Monter les Partitions==== ====3.6 - Monter les Partitions====
  
-Editez une dernère fois le fichier **storage.yml** :+Éditez une dernière fois le fichier **storage.yml** :
  
 <code> <code>
 trainee@debian11:~/ansible/storage$ vi storage.yml trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 trainee@debian11:~/ansible/storage$ cat storage.yml  trainee@debian11:~/ansible/storage$ cat storage.yml 
 --- ---
Ligne 1160: Ligne 1196:
 ====3.8 - Vérification des Modifications==== ====3.8 - Vérification des Modifications====
  
-Vérifiez la modification dans la VM centos8 :+Vérifiez la modification dans la VM **CentOS_8** :
  
 <code> <code>
Ligne 1206: Ligne 1242:
  
 ====LAB #4 - Gestion du Tâches==== ====LAB #4 - Gestion du Tâches====
 +
 +====4.1 - Création d'un Cron Job====
 +
 +Créez le fichier **schedule.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi schedule.yml
 +
 +trainee@debian11:~/ansible/storage$ cat schedule.yml
 +---
 +- name: scheduling
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: cron_job
 +      cron:
 +        name: my cron job
 +        hour: '11'
 +        minute: '25'
 +        job: 'cat /etc/passwd > /tmp/file1'
 +        user: root
 +        cron_file: mycron
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez l'utilisation du module **cron** qui crée un cron job dont la description est **my cron job** et le fichier est **/etc/cron.d/mycron**. Notez que les valeurs de **hour** et **minute** doivent être passées en tant que texte.
 +</WRAP>
 +
 +Exécutez le playbook :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible-playbook schedule.yml 
 +
 +PLAY [scheduling] ********************************************************************************************************************************************************************************************
 +
 +TASK [cron_job] **********************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +PLAY RECAP ***************************************************************************************************************************************************************************************************
 +10.0.2.45                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
 +</code>
 +
 +Vérifiez le contenu du fichier **/etc/cron.d/mycron** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible all -m command -a 'cat /etc/cron.d/mycron'
 +10.0.2.45 | CHANGED | rc=0 >>
 +#Ansible: my cron job
 +25 11 * * * root cat /etc/passwd > /tmp/file1
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez que la valeur de **name:** figure sur la ligne commençant par **#Ansible:**.
 +</WRAP>
 +
 +====4.1 - Création d'un AT Job====
 +
 +Créez le fichier **abc.txt** dans le répertoire **/home/trainee** de la VM **CentOS_8** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible all -m command -a 'touch /home/trainee/abc.txt'
 +[WARNING]: Consider using the file module with state=touch rather than running 'touch' If you need to use command because file is insufficient you can add 'warn: false' to this command task or set
 +'command_warnings=False' in ansible.cfg to get rid of this message.
 +10.0.2.45 | CHANGED | rc=0 >>
 +</code>
 +
 +Éditez le fichier **schedule.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi schedule.yml
 +
 +trainee@debian11:~/ansible/storage$ cat schedule.yml
 +---
 +- name: scheduling
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: cron_job
 +      cron:
 +        name: my cron job
 +        hour: '11'
 +        minute: '25'
 +        job: 'cat /etc/passwd > /tmp/file1'
 +        user: root
 +        cron_file: mycron
 +
 +    - name: at_job
 +      at:
 +        command: cp /home/trainee/abc.txt /tmp/
 +        count: 1
 +        units: minutes
 +        unique: true
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez l'utilisation du module **at** qui crée un at job qui s'exécutera une minute après l'exécution du playbook. Puisque le module **at** ne comprend pas l'élément **name:**, la valeur **unique:true** spécifie que si le job existe déjà dans la queue, celui-ci ne sera pas créé. Notez que la valeur de **count:** est un entier.
 +</WRAP>
 +
 +Exécutez le playbook :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible-playbook schedule.yml 
 +
 +PLAY [scheduling] ********************************************************************************************************************************************************************************************
 +
 +TASK [cron_job] **********************************************************************************************************************************************************************************************
 +ok: [10.0.2.45]
 +
 +TASK [at_job] ************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +PLAY RECAP ***************************************************************************************************************************************************************************************************
 +10.0.2.45                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
 +</code>
 +
 +Vérifiez immédiatement la présence du fichier at job :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible all -m command -a 'ls /var/spool/at'
 +10.0.2.45 | CHANGED | rc=0 >>
 +a0000201af2968
 +spool
 +</code>
  
 ----- -----
  
-Copyright © 2023 Hugh Norris.+Copyright © 2024 Hugh Norris.
Menu