Présentation
Ansible est un outil d'infrastructure en tant que code qui vous permet d'utiliser un emplacement central unique (nœud de contrôle Ansible) pour surveiller et contrôler un grand nombre de serveurs distants (hôtes).
Utilisez Ansible pour configurer un certain nombre de tâches que les hôtes distants peuvent effectuer, y compris la création de nouveaux fichiers et répertoires.
Ce didacticiel couvre différentes manières d'utiliser Ansible pour créer des fichiers sur des hôtes distants.
Prérequis
- Un système exécutant Ubuntu 20.04
- Accès à la ligne de commande/fenêtre du terminal
- Ansible installé et configuré (voir nos guides sur l'installation d'Ansible sur Windows ou l'installation d'Ansible sur Ubuntu)
Créer un playbook Ansible
Les playbooks Ansible sont des listes de tâches que vous souhaitez que vos hôtes distants effectuent. Ils peuvent être enregistrés et réutilisés, ce qui vous permet d'automatiser des processus complexes.
Chaque commande que vous souhaitez envoyer à un hôte distant, y compris la création de fichiers et de dossiers, est une tâche que vous devez inclure dans un playbook. Une fois que vous avez exécuté un playbook, votre hôte distant exécute toutes les tâches qui y sont définies.
Pour créer un playbook Ansible, utilisez la commande :
sudo nano /etc/ansible/playbook.yaml
Cette commande crée un fichier .yaml appelé ‘playbook’ dans le dossier d'installation d'Ansible. Nous utiliserons des tâches dans le playbook.yaml file pour créer des fichiers et des dossiers sur nos hôtes distants.
L'utilisation de la fonction de simulation d'Ansible permet aux utilisateurs d'exécuter un playbook sans apporter de modifications aux serveurs. Il utilise le mode de vérification intégré pour vérifier la présence d'erreurs dans un playbook avant son exécution.
Création d'un fichier vide
Le moyen le plus rapide de créer un fichier vide consiste à utiliser le file
d'Ansible. module.
Ajoutez la configuration suivante à votre playbook Ansible :
---
- hosts: all
tasks:
- name: Creating an empty file
file:
path: "/your path"
state: touch
Le fichier ci-dessus contient les composants suivants :
hosts
: Définit sur quels hôtes distants de votre fichier d'inventaire Ansible vous souhaitez exécuter la tâche. Tout signifie que chaque hôte reçoit la commande, mais vous pouvez également entrer le nom d'une catégorie d'hôtes ou d'un hôte individuel.tasks
: Annonce que l'hôte distant doit effectuer une tâche.name
:permet de définir un nom pour la tâche. Le nom est pour votre référence seulement et n'a aucune influence sur la tâche elle-même.file
:engage le module de fichiers d'Ansible pour créer un nouveau fichier.path
:Définit le chemin d'accès au nouveau fichier sur le disque dur de l'hôte distant.state
:Semblable à la commande touch dans le terminal Ubuntu, en saisissanttouch
crée un fichier vide à l'emplacement que vous avez choisi.
Pour exécuter le playbook, utilisez :
ansible-playbook /etc/ansible/playbook.yaml
Créer un fichier avec du contenu
Si vous souhaitez créer un nouveau fichier avec du contenu, vous pouvez d'abord utiliser la méthode ci-dessus pour créer un fichier vide, puis utiliser le blockinfile
ou lineinfile
module pour insérer du contenu.
Un moyen plus rapide consiste à utiliser la copy
module. Même si ce module est utilisé pour copier un fichier du nœud de contrôle vers l'hôte distant, vous pouvez inclure le content
paramètre pour ajouter instantanément du contenu à un fichier vide.
Utilisez cette configuration dans votre playbook :
---
- hosts: all
tasks:
- name: Creating a file with content
copy:
dest: "/your path"
content: |
line 01
line 02
Dans le fichier, nous avons utilisé :
copy
:engage le module de copie d'Ansible.dest
:Définit le chemin de votre nouveau fichier.content
:Ce paramètre ajouteraline 01
etline 02
comme contenu du nouveau fichier.
Créer plusieurs fichiers
Vous pouvez créer plusieurs fichiers en utilisant une seule tâche dans un playbook Ansible.
Utilisez la configuration suivante pour créer plusieurs fichiers :
---
- hosts: all
tasks:
- name: Create multiple files
file:
path: "{{ item }}"
state: touch
with_items:
- test01.txt
- test02.txt
- test03.txt
- test04.txt
Dans le fichier de configuration ci-dessus, nous avons défini :
path
:Le"{{ item }}"
La valeur signifie qu'Ansible créera un chemin séparé pour chaque fichier respectif. Par défaut, ces fichiers vont dans le dossier Home de l'hôte distant. Définissez un chemin différent en utilisant/your_folder_path/"{{ item }}"
.with_items
:Ce paramètre permet de démarrer une liste de fichiers à créer. Listez autant de fichiers que vous le souhaitez. Dans notre exemple, nous avons créé une liste de quatre fichiers intitulés test .
Création d'un répertoire
La création d'un nouveau répertoire utilise la même configuration que lors de la création d'un fichier vide. La seule différence est que sous l'état state
paramètre, vous saisissez directory
comme valeur :
---
- hosts: all
tasks:
- name: Creating a new directory
file:
path: "/your path"
state: directory
Supprimer des fichiers
Les playbooks Ansible peuvent également supprimer des fichiers existants. Pour ce faire, définissez l'state
paramètre à absent
:
---
- hosts: all
tasks:
- name: Removing a file
file:
path: "/your path"
state: absent
Si le fichier est déjà supprimé, cette commande ne fait rien.
Définition des autorisations de fichier
Avec tous les exemples ci-dessus, vous pouvez également définir l'autorisation pour les nouveaux fichiers et dossiers. Pour cela, vous devez utiliser le mode
paramètre.
Il existe deux manières de procéder :
- Utilisation du format en mode octal : Vous pouvez utiliser des nombres octaux, comme 0644 ou 0777. N'oubliez pas le 0 initial, car l'omettre peut entraîner des résultats inattendus.
- Utilisation du format en mode symbolique : Vous pouvez utiliser des valeurs telles que
u=rwx
,g=rx
, ouo=rx
, oùu
signifie propriétaire ,g
signifie groupe , eto
signifie autres . Les autorisations sont définies commer
pour lire ,w
pour écrire , etx
pour exécuter .
Par exemple, vous pouvez utiliser la valeur octale 0755, lors de la définition du propriétaire :
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: 0755
owner: test
Vous pouvez également utiliser l'équivalent symbolique de 0755 :
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: u=rwx,g=rx,o=rx
owner: test