Introduction
Dans ce laboratoire, vous allez explorer le module Stat d'Ansible, qui vous permet de collecter des informations sur les fichiers et les répertoires sur des hôtes distants. Le module Stat fournit diverses attributs et informations, telles que la taille du fichier, la propriété, les permissions et les horodatages de modification.
Obtenir des informations sur un fichier
Dans cette étape, vous allez utiliser le module Stat d'Ansible pour collecter des informations sur un fichier sur un hôte distant.
Tout d'abord, créez un nouveau fichier de playbook Ansible appelé /home/labex/project/stat-module-playbook.yaml et ouvrez-le dans un éditeur de texte.
Ajoutez le contenu suivant au fichier de playbook :
- hosts: localhost
tasks:
- name: Obtenir des informations sur un fichier
stat:
path: /home/labex/project/file.txt
register: file_info
- name: Afficher les informations sur le fichier
debug:
msg: |
Taille du fichier : {{ file_info.stat.size }}
Propriétaire : {{ file_info.stat.uid }}:{{ file_info.stat.gid }}
Permissions : {{ file_info.stat.mode }}
hosts: Cela spécifie l'hôte cible sur lequel exécuter le playbook. Dans ce cas, le playbook sera exécuté sur l'hôte local car l'hôte cible estlocalhost.tasks: Il s'agit d'une liste de tâches à exécuter.name: C'est le nom descriptif de la tâche qui identifie le but de la tâche.stat: Ce module Ansible collecte des informations sur un fichier sur l'hôte distant spécifié par le paramètrepath.register: Stocke la sortie du modulestatdans une variable nomméefile_infopour une utilisation ultérieure.debug: Affiche des informations de débogage pendant l'exécution du playbook.msg: Affiche un message avec les informations sur le fichier récupérées en utilisant le modulestat, y compris la taille du fichier, la propriété (UID et GID) et les permissions.
En résumé, ce playbook est conçu pour récupérer des informations sur un fichier spécifique situé à /home/labex/project/file.txt sur l'hôte local et afficher divers détails tels que la taille, la propriété et les permissions.
Ensuite, créez un fichier appelé file.txt dans le répertoire /home/labex/project.
echo "This is the content of the file." > /home/labex/project/file.txt
Enfin, exécutez le playbook avec la commande suivante :
ansible-playbook stat-module-playbook.yaml
Observez la sortie pour voir la taille du fichier, la propriété et les permissions du fichier spécifié. Exemple de sortie :
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Get file information] ****************************************************
ok: [localhost]
TASK [Print file information] **************************************************
ok: [localhost] => {
"msg": "File size: 33\nOwnership: 5000:5000\nPermissions: 0664\n"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vérifier l'existence d'un fichier
Dans cette étape, vous allez utiliser le module Stat d'Ansible pour vérifier l'existence d'un fichier sur un hôte distant.
Tout d'abord, modifiez le fichier de playbook existant en supprimant tout le contenu et en ajoutant le contenu suivant au fichier de playbook :
- hosts: localhost
tasks:
- name: Vérifier l'existence d'un fichier sur l'hôte distant
stat:
path: /home/labex/project/file.txt
register: file_info
- name: Afficher l'existence du fichier
debug:
msg: "Le fichier existe : {{ file_info.stat.exists }}"
hosts: Cela spécifie l'hôte cible sur lequel exécuter le playbook. Dans ce cas, le playbook sera exécuté sur l'hôte local car l'hôte cible estlocalhost.tasks: Il s'agit d'une liste de tâches à exécuter.name: C'est le nom descriptif de la tâche qui identifie le but de la tâche.stat: Ce module Ansible collecte des informations sur un fichier sur l'hôte distant spécifié par le paramètrepath.register: Stocke la sortie du modulestatdans une variable nomméefile_infopour une utilisation ultérieure.debug: Affiche des informations de débogage pendant l'exécution du playbook.msg: Affiche un message indiquant si le fichier existe ou non en fonction des informations récupérées en utilisant le modulestat.
En résumé, ce playbook est conçu pour vérifier l'existence d'un fichier spécifique situé à /path/on/remote/host/file.txt sur l'hôte local et afficher un message indiquant si le fichier existe ou non.
Ensuite, exécutez le playbook avec la commande suivante :
ansible-playbook stat-module-playbook.yaml
Observez la sortie pour voir si le fichier file.txt existe sur l'hôte distant.
Exemple de sortie :
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Check file existence on remote host] *************************************
ok: [localhost]
TASK [Print file existence] ****************************************************
ok: [localhost] => {
"msg": "Le fichier existe : True"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Récupérer le timestamp de modification d'un fichier
Dans cette étape, vous allez utiliser le module Stat d'Ansible pour récupérer le timestamp de modification d'un fichier sur un hôte distant.
Tout d'abord, modifiez le fichier de playbook existant en supprimant tout le contenu et en ajoutant le contenu suivant au fichier de playbook :
- hosts: localhost
tasks:
- name: Obtenir le timestamp de modification du fichier
stat:
path: /home/labex/project/file.txt
register: file_info
- name: Afficher le timestamp de modification du fichier
debug:
msg: "Timestamp de modification du fichier : {{ file_info.stat.mtime }}"
hosts: Cela spécifie l'hôte cible sur lequel exécuter le playbook. Dans ce cas, le playbook sera exécuté sur l'hôte local car l'hôte cible estlocalhost.tasks: Il s'agit d'une liste de tâches à exécuter.name: C'est le nom descriptif de la tâche qui identifie le but de la tâche.stat: Ce module Ansible collecte des informations sur un fichier sur l'hôte distant spécifié par le paramètrepath.register: Stocke la sortie du modulestatdans une variable nomméefile_infopour une utilisation ultérieure.debug: Affiche des informations de débogage pendant l'exécution du playbook.msg: Affiche un message contenant le timestamp de modification du fichier récupéré en utilisant le modulestat.
En résumé, ce playbook est conçu pour récupérer le timestamp de modification d'un fichier spécifique situé à /home/labex/project/file.txt sur l'hôte local et afficher le timestamp.
Ensuite, exécutez le playbook avec la commande suivante :
ansible-playbook stat-module-playbook.yaml
Observez la sortie pour voir le timestamp de modification du fichier file.txt au format lisible par l'homme.
Exemple de sortie :
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Get file modification timestamp] *****************************************
ok: [localhost]
TASK [Print file modification timestamp] ***************************************
ok: [localhost] => {
"msg": "Timestamp de modification du fichier : 1710555624.2304714"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Résumé
Félicitations! Vous avez réussi le laboratoire sur le module Stat d'Ansible. Vous avez appris à collecter des informations sur les fichiers, à vérifier l'existence d'un fichier et à récupérer le timestamp de modification à l'aide du module Stat dans Ansible.
Le module Stat est un outil puissant qui vous permet de collecter diverses attributs et informations sur les fichiers et les répertoires sur des hôtes distants. Vous pouvez désormais utiliser ce module dans vos playbooks Ansible pour effectuer des opérations avancées liées aux fichiers et prendre des décisions éclairées en fonction des informations collectées.
Continuez à explorer la documentation Ansible et à expérimenter avec différents modules pour améliorer vos compétences en automatisation. Bonne continuation avec Ansible!


