De la même manière, il existe un module lineinfile
pour ajouter une ligne dans un fichier, existe-t-il un moyen d'ajouter plusieurs lignes?
Je ne souhaite pas utiliser de modèle car vous devez fournir le fichier complet. Je veux juste ajouter quelque chose à un fichier existant sans nécessairement savoir ce que le fichier contient déjà donc un modèle n'est pas une option.
template
, mais utiliserlineinfile
est un anti-modèle . C'est aussi un signal d'alarme fort indiquant que vous «ne savez pas ce qu'il y a dans le fichier», ce qui entraîne un risque important d'échecs inconnus.Réponses:
Vous pouvez utiliser une boucle pour le faire. Voici un exemple utilisant une
with_items
boucle:la source
msg: this module requires key=value arguments
. L'exemple donné a cela correct - je n'ai tout simplement pas suivi l'exemple.Vous pouvez essayer d'utiliser à la
blockinfile
place.Vous pouvez faire quelque chose comme
la source
blockinfile
module a fonctionné à merveille chaque fois que j'ai choisi de l'utiliser. J'aime particulièrement le comportement intuitif des optionsinsertafter
/insertbefore
.blockinfile
?Si vous avez besoin de configurer un ensemble de lignes propriété = valeur uniques, je recommande une boucle plus concise. Par exemple:
Utiliser un dict comme suggéré par Alix Axel et ajouter la suppression automatique des entrées commentées correspondantes,
la source
Voici une version sans bruit de la solution qui doit utiliser with_items:
Pour chaque élément, si l'élément existe dans fruits.txt, aucune action n'est entreprise.
Si l'élément n'existe pas, il sera ajouté à la fin du fichier.
Peasy facile.
la source
Ce n'est pas idéal, mais vous êtes autorisé à plusieurs appels
lineinfile
. En utilisant cela avecinsert_after
, vous pouvez obtenir le résultat souhaité:la source
J'ai pu le faire en utilisant
\n
le paramètre de ligne.C'est particulièrement utile si le fichier peut être validé et que l'ajout d'une seule ligne génère un fichier invalide.
Dans mon cas, j'ajoutais
AuthorizedKeysCommand
etAuthorizedKeysCommandUser
à sshd_config , avec la commande suivante:L'ajout d'une seule des options génère un fichier dont la validation échoue.
la source
Pour ajouter plusieurs lignes, vous pouvez utiliser blockfile:
pour ajouter une ligne, vous pouvez utiliser lininfile:
la source
Pour ajouter plusieurs lignes, vous pouvez utiliser le
lineinfile
module avecwith_items
également une variablevars
ici pour le rendre simple :)la source