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/21 15:35] 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 24: Ligne 24:
       * 2.1 - Interdire des Connexions SSH par Root       * 2.1 - Interdire des Connexions SSH par Root
     * LAB #3 - Gestion du Stockage     * LAB #3 - Gestion du Stockage
 +      * 3.1 - Préparation 
 +      * 3.2 - Création des Partitions 
 +      * 3.3 - Création des VG et LV 
 +      * 3.4 - Création des Filesystems 
 +      * 3.5 - Création des Points de Montage 
 +      * 3.6 - Monter les Partitions 
 +      * 3.7 - Exécution du Playbook 
 +      * 3.8 - Vérification des Modifications 
 +    * 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 36: 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 56: 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 73: 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 86: 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 127: 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 138: 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 157: 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 283: 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 331: 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 369: 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 385: 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 442: 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 484: 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 497: 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 541: 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 564: 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 675: Ligne 710:
 [devops@centos8 ~]$ whoami [devops@centos8 ~]$ whoami
 devops devops
 +
 [devops@centos8 ~]$ exit [devops@centos8 ~]$ exit
 logout logout
Ligne 688: 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 783: Ligne 820:
 =====LAB #3 - Gestion du Stockage===== =====LAB #3 - Gestion du Stockage=====
  
 +====3.1 - Préparation===
  
 +Commencez par créer le répertoire **/home/ansible/storage** :
 +
 +<code>
 +trainee@debian11:~/ansible/users$ cd ..
 +
 +trainee@debian11:~/ansible$ mkdir storage
 +</code>
 +
 +Copiez ensuite les fichiers **/home/ansible/users/inventory** et **/home/ansible/users/ansible.cfg** dans le répertoire **/home/ansible/storage** :
 +
 +<code>
 +trainee@debian11:~/ansible$ cp users/{inventory,ansible.cfg} storage/
 +
 +trainee@debian11:~/ansible$ cd storage
 +
 +trainee@debian11:~/ansible/storage$ ls
 +ansible.cfg  inventory
 +</code>
 +
 +Consultez ensuite l'organisation des disques et des partitions de la VM **CentOS_8** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible all -m command -a 'lsblk'
 +10.0.2.45 | CHANGED | rc=0 >>
 +NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 +sda                   8:   0   32G  0 disk 
 +├─sda1                8:1    0    1G  0 part /boot
 +└─sda2                8:2    0   31G  0 part 
 +  ├─cl_centos8-root 253:0    0 27.8G  0 lvm  /
 +  └─cl_centos8-swap 253:1    0  3.2G  0 lvm  [SWAP]
 +sdb                   8:16      4G  0 disk 
 +sdc                   8:32     64G  0 disk 
 +└─sdc1                8:33     64G  0 part /home
 +sdd                   8:48     32G  0 disk 
 +sr0                  11:0    1 1024M  0 rom 
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez la présence du disque **sdb** qui est inutilisé.
 +</WRAP>
 +
 +====3.2 - Création des Partitions====
 +
 +Créez ensuite le fichier **storage.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 +trainee@debian11:~/ansible/storage$ cat storage.yml
 +---
 +- name: storage
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: part1
 +      parted:
 +        device: /dev/sdb
 +        part_start: 0%
 +        part_end: 50%
 +        number: 1
 +        state: present
 +
 +    - name: part2
 +      parted:
 +        device: /dev/sdb
 +        part_start: 50%
 +        part_end: 100%
 +        number: 2
 +        state: present
 +        flags: [ lvm ]
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez l'utilisation du module **parted**. Le **device** est **/dev/sdb**. La partition commence au début du disque. La taille peut être spécifiée en GB, MB, secteurs ou en pourcentage. Dans le cas de la partition 2, le drapeau de la partition est fixé à **lvm**.
 +</WRAP>
 +
 +====3.3 - Création des VG et LV====
 +
 +Éditez le fichier **storage.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 +trainee@debian11:~/ansible/storage$ cat storage.yml 
 +---
 +- name: play1
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: part1
 +      parted:
 +        device: /dev/sdb
 +        part_start: 0%
 +        part_end: 50%
 +        number: 1
 +        state: present
 +
 +    - name: part2
 +      parted:
 +        device: /dev/sdb
 +        part_start: 50%
 +        part_end: 100%
 +        number: 2
 +        state: present
 +        flags: [ lvm ]
 +
 +    - name: vg
 +      lvg:
 +        vg: vg1
 +        pvs: /dev/sdb2
 +
 +    - name: lv
 +      lvol:
 +        lv: lv1
 +        vg: vg1
 +        size: 100%FREE
 +        shrink: false
 +</code>
 +
 +<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 volume ne peut pas être réduite.
 +</WRAP>
 +
 +====3.4 - Création des Filesystems====
 +
 +Éditez de nouveau le fichier **storage.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 +trainee@debian11:~/ansible/storage$ cat storage.yml 
 +---
 +- name: play1
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: part1
 +      parted:
 +        device: /dev/sdb
 +        part_start: 0%
 +        part_end: 50%
 +        number: 1
 +        state: present
 +
 +    - name: part2
 +      parted:
 +        device: /dev/sdb
 +        part_start: 50%
 +        part_end: 100%
 +        number: 2
 +        state: present
 +        flags: [ lvm ]
 +
 +    - name: vg
 +      lvg:
 +        vg: vg1
 +        pvs: /dev/sdb2
 +
 +    - name: lv
 +      lvol:
 +        lv: lv1
 +        vg: vg1
 +        size: 100%FREE
 +        shrink: false
 +
 +    - name: sdb1
 +      filesystem: 
 +        fstype: xfs
 +        dev: /dev/sdb1
 +
 +    - name: lv
 +      filesystem:
 +        fstype: xfs
 +        dev: /dev/vg1/lv1
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez l'utilisation du module **filesystem** pour créer des systèmes de fichiers de type **xfs** sur **/dev/sdb1** et **/dev/vg1/lv1**.
 +</WRAP>
 +
 +====3.5 - Création des Points de Montage====
 +
 +Éditez ensuite le fichier **storage.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi storage.yml
 +trainee@debian11:~/ansible/storage$ cat storage.yml 
 +---
 +- name: play1
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: part1
 +      parted:
 +        device: /dev/sdb
 +        part_start: 0%
 +        part_end: 50%
 +        number: 1
 +        state: present
 +
 +    - name: part2
 +      parted:
 +        device: /dev/sdb
 +        part_start: 50%
 +        part_end: 100%
 +        number: 2
 +        state: present
 +        flags: [ lvm ]
 +
 +    - name: vg
 +      lvg:
 +        vg: vg1
 +        pvs: /dev/sdb2
 +
 +    - name: lv
 +      lvol:
 +        lv: lv1
 +        vg: vg1
 +        size: 100%FREE
 +        shrink: false
 +
 +    - name: sdb1
 +      filesystem: 
 +        fstype: xfs
 +        dev: /dev/sdb1
 +
 +    - name: lv
 +      filesystem:
 +        fstype: xfs
 +        dev: /dev/vg1/lv1
 +
 +    - name: dir1
 +      file:
 +        path: "{{ item }}"
 +        state: directory
 +      loop:
 +        - /data
 +        - /data/sales
 +        - /data/marketing
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez l'utilisation du module **file** pour créer les répertoires **/data**, **/data/sales** et **/data/marketing** grâce au mot clef **loop**.
 +</WRAP>
 +
 +====3.6 - Monter les Partitions====
 +
 +Éditez une dernière fois le fichier **storage.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ vi storage.yml
 +
 +trainee@debian11:~/ansible/storage$ cat storage.yml 
 +---
 +- name: play1
 +  hosts: all
 +  become: true
 +  gather_facts: false
 +  tasks:
 +    - name: part1
 +      parted:
 +        device: /dev/sdb
 +        part_start: 0%
 +        part_end: 50%
 +        number: 1
 +        state: present
 +
 +    - name: part2
 +      parted:
 +        device: /dev/sdb
 +        part_start: 50%
 +        part_end: 100%
 +        number: 2
 +        state: present
 +        flags: [ lvm ]
 +
 +    - name: vg
 +      lvg:
 +        vg: vg1
 +        pvs: /dev/sdb2
 +
 +    - name: lv
 +      lvol:
 +        lv: lv1
 +        vg: vg1
 +        size: 100%FREE
 +        shrink: false
 +
 +    - name: sdb1
 +      filesystem: 
 +        fstype: xfs
 +        dev: /dev/sdb1
 +
 +    - name: lv
 +      filesystem:
 +        fstype: xfs
 +        dev: /dev/vg1/lv1
 +
 +    - name: dir1
 +      file:
 +        path: "{{ item }}"
 +        state: directory
 +      loop:
 +        - /data
 +        - /data/sales
 +        - /data/marketing
 +
 +    - name: mount sales
 +      mount: 
 +        path: /data/sales
 +        src: /dev/sdb1
 +        fstype: xfs
 +        state: mounted
 +
 +    - name: mount marketing
 +      mount: 
 +        path: /data/marketing
 +        src: /dev/vg1/lv1
 +        fstype: xfs
 +        state: mounted  
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez l'utilisation du module **mount** pour monter les filesystems **/dev/sdb1** et **/dev/vg1/lv1** sur les répertoires **/data/sales** et **/data/marketing** respectivement.
 +</WRAP>
 +
 +====3.7 - Exécution du Playbook====
 +
 +Exécutez maintenant le playbook **storage.yml** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible-playbook storage.yml 
 +
 +PLAY [play1] *************************************************************************************************************************************************************************************************
 +
 +TASK [part1] *************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [part2] *************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [vg] ****************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [lv] ****************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [sdb1] **************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [lv] ****************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [dir1] **************************************************************************************************************************************************************************************************
 +changed: [10.0.2.45] => (item=/data)
 +changed: [10.0.2.45] => (item=/data/sales)
 +changed: [10.0.2.45] => (item=/data/marketing)
 +
 +TASK [mount sales] *******************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +TASK [mount marketing] ***************************************************************************************************************************************************************************************
 +changed: [10.0.2.45]
 +
 +PLAY RECAP ***************************************************************************************************************************************************************************************************
 +10.0.2.45                  : ok=9    changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
 +</code>
 +
 +====3.8 - Vérification des Modifications====
 +
 +Vérifiez la modification dans la VM **CentOS_8** :
 +
 +<code>
 +trainee@debian11:~/ansible/storage$ ansible all -m command -a 'lsblk'
 +10.0.2.45 | CHANGED | rc=0 >>
 +NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 +sda                   8:   0   32G  0 disk 
 +├─sda1                8:1    0    1G  0 part /boot
 +└─sda2                8:2    0   31G  0 part 
 +  ├─cl_centos8-root 253:0    0 27.8G  0 lvm  /
 +  └─cl_centos8-swap 253:1    0  3.2G  0 lvm  [SWAP]
 +sdb                   8:16      4G  0 disk 
 +├─sdb1                8:17      2G  0 part /data/sales
 +└─sdb2                8:18      2G  0 part 
 +  └─vg1-lv1         253:   0    2G  0 lvm  /data/marketing
 +sdc                   8:32     64G  0 disk 
 +└─sdc1                8:33     64G  0 part /home
 +sdd                   8:48     32G  0 disk 
 +sr0                  11:0    1 1024M  0 rom
 +
 +trainee@debian11:~/ansible/storage$ ansible all -m command -a 'cat /etc/fstab'
 +10.0.2.45 | CHANGED | rc=0 >>
 +
 +#
 +# /etc/fstab
 +# Created by anaconda on Wed Jun 16 06:21:32 2021
 +#
 +# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
 +# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
 +#
 +# After editing this file, run 'systemctl daemon-reload' to update systemd
 +# units generated from this file.
 +#
 +/dev/mapper/cl_centos8-root /                       xfs     defaults        0 0
 +UUID=1c04981e-5317-4b73-9695-3ce25246835d /boot                   ext4    defaults        1 2
 +/dev/mapper/cl_centos8-swap swap                    swap    defaults        0 0
 +UUID=f76d6b66-985b-4a91-af9c-4987e8c1443c /home     ext4          defaults            1 2
 +/dev/sdb1 /data/sales xfs defaults 0 0
 +/dev/vg1/lv1 /data/marketing xfs defaults 0 0
 +</code>
 +
 +<WRAP center round important 50%>
 +**Important** : Notez la présence des filesystems **/dev/sdb1** et **/dev/vg1/lv1** ainsi que les points de montage **/data/sales** et **/data/marketing**. Notez aussi les modifications apportées au fichier **/etc/fstab**.
 +</WRAP>
 +
 +====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