Gérer manuellement les fichiers et permissions sur plusieurs serveurs est complexe.
Cela entraîne des erreurs de configuration et une perte de temps considérable.
Le module Ansible file simplifie ces tâches en automatisant la gestion des fichiers et permissions.
Devenez un expert d'Ansible et simplifiez vos tâches d'administration.
Comprendre le module Ansible file
Le module ansible.builtin.file d’Ansible est utilisé pour gérer les fichiers et les propriétés des fichiers. Ce module offre plusieurs fonctionnalités très utiles pour la gestion des fichiers :
- Créer des fichiers et des répertoires :Créer des fichiers vides ou des répertoires avec les permissions et les propriétaires spécifiés.
- Modifier les propriétés des fichiers :Changer les permissions (mode), le propriétaire (owner) et le groupe (group) des fichiers ou des répertoires.
- Supprimer des fichiers ou des répertoires :Supprimer des fichiers ou des répertoires, y compris leur contenu si nécessaire.
- Créer des liens symboliques ou des liens durs :Créer des liens symboliques (symlinks) ou des liens durs (hard links) entre des fichiers.
Voici un exmple de playbook avec le module file :
---
- hosts: test
remote_user: root
tasks:
- name: Vérifier /srv/www
ansible.builtin.file:
path: /srv/www
state: directory
owner: root
group: root
mode: '0555'
hosts: test : Spécifie les hôtes cibles sur lesquels cette tâche doit être exécutée.
remote_user: root : Définit l’utilisateur distant pour la connexion SSH.
tasks : Début de la liste des tâches à exécuter.
name: Vérifier /srv/www : Nom de la tâche.
ansible.builtin.file : Utilise le module file d’Ansible.
path: /srv/www : Chemin du répertoire à vérifier ou à créer.
state: directory : Assure que le chemin spécifié est un répertoire.
owner: root : Définit le propriétaire du répertoire.
group: root : Définit le groupe du répertoire.
mode: ‘0555’ : Définit les permissions du répertoire en notation octale (lecture et exécution pour tous).
Ce playbook Ansible assure que le répertoire /srv/www existe sur les hôtes du groupe test , avec le propriétaire root , le groupe root , et des permissions en lecture et exécution pour tous.
Passons maintenant à la pratique pour bien comprendre le fonctionnement du module file. Pour commencer, nous allons exécuter le playbook suivant :
- hosts: servers
tasks:
- file:
path: /tmp/testFile
state: file
mode: 0755
modification_time: now
access_time: now
become: yes
Il consiste à modifier le fichier testFile dans le dossier tmp du nœud géré dans le groupe servers. Le fichier est maintenant présent dans ce dossier avec ses propriétés mises à jour, telles que la date de modification
Voilà, comme nous pouvons le voir sur le visuel, la dernière modification du fichier testFile était à 11h56.
Pour pouvoir exécuter le playbook, copions-le dans un fichier f ile-playbook.yml sur le nœud de contrôle comme ceci :
Exécutons le pour voire le résultat avec la commande : ansible-playbook -v file-playbook.yml
Voici le playbook exécuté. Les tâches sont accomplies et nous allons maintenant vérifier les modifications apportées au fichier sur le nœud géré en utilisant la commande ls -alh.
Parfait, tout fonctionne bien maintenant car le fichier a été modifié à 20h01, l’heure à laquelle le playbook a été exécuté.
Allons plus loin dans cette pratique. Créons maintenant un playbook contenant une tâche pour créer un répertoire dans le dossier / tmp du nœud géré. Suivons la même procédure pour le playbook suivant et exécutons-le ensuite.
- hosts: servers
tasks:
- name: create /tmp/testdir
file:
path: /tmp/testdir
owner: root
group: root
mode: 0555
become: yes
Exécutons-le maintenant avec la commande : ansible-playbook -v testdir-playbook.yml
Le résultat indique que la tâche a été exécutée avec succès. Vérifiez donc si testdir est présent sur le nœud géré.
Le fichier est bien présent dans le nœud géré, cela veut dire que le playbook était exécuté avec succès.
Gestion des fichiers avec Ansible file
Dans ce chapitre nous allons Copier le fichier foo.conf depuis /servers en spécifiant l’utilisateur et le groupe comme « ubuntu ». Configurer les permissions avec les droits suivants :
- Lecture et écriture pour le propriétaire.
- Lecture seule pour le groupe et les autres utilisateurs.
Et enfin, créer une représentation symbolique du fichier /etc/foo.conf dans /tmp.
Voici le playbook pour ces taches :
– hosts: servers
tasks:
– name: Copy file with owner and permission
ansible.builtin.copy:
src: /home/ubuntu/formation/src/foo.conf
dest: /etc/foo.conf
owner: ubuntu
group: ubuntu
mode: u=rw,g=r,o=r
become: yes
– name: Create a symbolic link
ansible.builtin.file:
src: /etc/foo.conf
dest: /tmp/foo.conf
owner: ubuntu
group: ubuntu
state: link
become: yes
Copie du fichier avec propriétaire et permissions :
- Utilise le module copy pour copier /formation/foo.conf vers /tmp/foo.conf.
- Définit ubuntu comme propriétaire et groupe du fichier copié.
- Fixe les permissions à lecture et écriture pour le propriétaire ( u=rw), lecture seule pour le groupe ( g=r) et pour les autres utilisateurs ( o=r).
Création d’un lien symbolique :
- Utilise le module file pour créer un lien symbolique depuis / etc/foo.conf vers /tmp/foo.conf.
- Configure le lien symbolique pour avoir ubuntu comme propriétaire et groupe.
- Indique que l’état du fichier à créer est un lien symbolique avecstate :link.
Avant d’exécuter ce playbook, créons d’abord le fichier foo.conf dans le répertoire formation/src
Ensuite, copions le playbook dans le fichier file-playbook.yml et exécutons-le avec la commande : ansible-playbook -v file-playbook.yml.
Bien , le résultat nous indique que les taches sont bien exécutées avec succès. Vérifier le fichier s’il est présent dans le dossier /tmp du nœud géré :
La copie a réussi car le fichier est maintenant présent dans le répertoire / tmp du serveur distant et également dans le répertoire /etc.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment créer des fichiers et des répertoires avec Ansible ?
Comment modifier les permissions de fichiers avec Ansible ?
Comment supprimer des fichiers ou répertoires avec Ansible ?
Comment créer des liens symboliques avec Ansible ?
Comment copier des fichiers avec des permissions spécifiques dans Ansible ?
Conclusion
En utilisant le module Ansible file, vous maîtrisez la gestion des fichiers sur vos systèmes. Quelle stratégie adopteriez-vous pour optimiser ce processus dans vos projets futurs ?