Hors de la boîte, ANIBLE a de nombreux outils et fonctionnalités. L'un d'eux est le module LineInfile. Ce module vous permet de gérer une seule ligne dans un fichier situé sur un hôte distant.
Il prend en charge les fonctionnalités telles que le remplacement du contenu sur un fichier, la mise à jour du contenu dans une ligne, l'ajout de contenu sur une ligne, et plus.
Ce guide illustrera comment utiliser le module ANSIBLE LINEInfile pour gérer les fichiers sur des hôtes distants.
Exigences
Pour suivre le concept de ce tutoriel, assurez-vous d'avoir les exigences de base suivantes:
Confirmer si une entrée spécifique existe
Pour nous assurer qu'une entrée spécifique est présente dans un fichier, nous pouvons utiliser le module LineInfile et préparer la scène pour présenter.
Considérez l'exemple de playbook ci-dessous:
---
- hôtes: tout
rassemble_facts: oui
devenir: oui
Tâches:
- Nom: Vérifiez si / etc / hôtes contient 127.0.0.1"
LineInfile:
Chemin: "/ etc / hôtes"
État: présent
Ligne: "127.0.0.1"
Check_Mode: Oui
Enregistrer:
L'exemple ci-dessus vérifiera si l'entrée existe dans le fichier spécifié et l'ajoutera s'il n'existe pas.
Créer un fichier et ajouter une nouvelle ligne
Nous pouvons utiliser le module LineInfile pour créer un fichier et ajouter une nouvelle ligne au fichier créé.
Considérez l'exemple de playbook ci-dessous:
---
- hôtes: tout
rassemble_facts: non
Tâches:
- Nom: Créez un fichier et ajoutez la ligne
LineInfile:
dest: / home / ubuntu / exemple.confli
Ligne: il s'agit d'une nouvelle entrée dans le fichier
État: présent
Créer: vrai
Dans l'exemple Playbook ci-dessus, nous utilisons le paramètre dest pour spécifier le chemin du fichier.
Ensuite, nous utilisons le paramètre de ligne pour définir la ligne pour ajouter au fichier. Nous utilisons cela conjointement avec l'état: paramètre actuel.
Enfin, nous définissons le paramètre Créer sur True, qui indique à Ansible de créer le fichier s'il existe.
Si vous exécutez le playbook deux fois, il n'effectuera aucune action car le fichier et la ligne spécifiés existent.
Ajouter une ligne avant / après une entrée
Pour ajouter une ligne avant ou après une entrée particulière, vous pouvez utiliser les paramètres d'insertion ou d'insertion avant.
Jetez un œil à l'exemple ci-dessous:
---
- hôtes: tout
rassemble_facts: non
Tâches:
- Nom: Ajouter une ligne avant / après
LineInfile:
chemin: / etc / apache2 / apache2.confli
regex: '^ serverroot'
insertafter: '^ # serverroot'
Ligne: serverroot "/ etc / apache2"
Après la ligne commentée, le module LineInfile ajoutera l'entrée de serverroot "/ etc / apache2".
Suppression d'une ligne
Pour supprimer une entrée d'un fichier, définissez l'état sur l'absence comme indiqué dans l'exemple de playbook ci-dessous:
---
- hôtes: tout
rassemble_facts: non
Tâches:
- Nom: Supprimer une ligne
LineInfile:
chemin: / etc / apache2 / apache2.confli
regex: '^ # serverroot'
État: absent
L'exemple ci-dessus utilise une expression régulière simple pour correspondre à la ligne à partir de #serverroot.
Commentant une ligne
Pour commenter une ligne, utilisez le paramètre ANSIBLE LINEINFILE Backrefs. Jetez un œil à l'exemple de playbook ci-dessous:
---
- hôtes: tout
rassemble_facts: non
Tâches:
- Nom: Supprimer une ligne
LineInfile:
chemin: / etc / apache2 / apache2.confli
ligne 1'
Regex: '^ # écouter 8080'
Backrefs: oui
Dans l'exemple ci-dessus, nous utilisons une expression régulière pour correspondre à la ligne que nous souhaitons commenter.
Nous utilisons ensuite le contenu de la ligne de correspondance et ajoutons un personnage de commentaire.
Fichier de sauvegarde avant de changer
Il est bon de vous assurer de sauvegarder une copie de vos fichiers avant de les modifier pour faciliter la restauration des fichiers en cas d'erreurs.
Pour sauvegarder un fichier à l'aide du module LineInfile, nous pouvons définir l'option de sauvegarde sur true.
Considérez l'exemple de playbook ci-dessous:
---
- hôtes: tout
rassemble_facts: non
Tâches:
- Nom: Supprimer une ligne
LineInfile:
chemin: / etc / apache2 / apache2.confli
regex: '^ # serverroot'
État: absent
Sauvegarde: oui
Conclusion
Le module ANSIBLE LINEInfile est bénéfique lors de la modification des fichiers de configuration sur les hôtes distants à l'aide de livres de play-books anibles.
Merci pour la lecture!