De la misma manera que hay un módulo lineinfilepara agregar una línea en un archivo, ¿hay alguna manera de agregar varias líneas?
No quiero usar una plantilla porque tienes que proporcionar todo el archivo. Solo quiero agregar algo a un archivo existente sin necesariamente saber qué contiene el archivo, por lo que una plantilla no es una opción.

template, pero usarlineinfilees un antipatrón . También es una señal de alerta que "no sabe lo que hay en el archivo", lo que conlleva un riesgo considerable de fallas desconocidas.Respuestas:
Puedes usar un bucle para hacerlo. Aquí hay un ejemplo usando un
with_itemsbucle:fuente
msg: this module requires key=value arguments. El ejemplo dado tiene esto correcto: simplemente no seguí el ejemplo.Puedes intentar usar en su
blockinfilelugar.Puedes hacer algo como
fuente
blockinfilemódulo ha funcionado maravillosamente cada vez que he elegido usarlo. Especialmente me encanta el comportamiento intuitivo de lasinsertafter/insertbeforeopciones.blockinfile?Si necesita configurar un conjunto de propiedades únicas = líneas de valor, le recomiendo un bucle más conciso. Por ejemplo:
Usando un dict como lo sugiere Alix Axel y agregando la eliminación automática de las entradas comentadas coincidentes,
fuente
Aquí hay una versión libre de ruido de la solución que se debe usar con elementos:
Para cada elemento, si el elemento existe en fruits.txt, no se realiza ninguna acción.
Si el elemento no existe, se agregará al final del archivo.
Pan comido.
fuente
No es ideal, pero se le permiten múltiples llamadas
lineinfile. Usando eso coninsert_after, puede obtener el resultado que desea:fuente
Pude hacer eso usando
\nel parámetro de línea.Es especialmente útil si el archivo se puede validar, y agregar una sola línea genera un archivo no válido.
En mi caso, estaba agregando
AuthorizedKeysCommandyAuthorizedKeysCommandUsera sshd_config , con el siguiente comando:Agregar solo una de las opciones genera un archivo que falla la validación.
fuente
Para agregar varias líneas puede usar blockfile:
Para agregar una línea puede usar lininfile:
fuente
Para agregar varias líneas, puede usar el
lineinfilemódulo conwith_itemstambién variable incluidavarsaquí para hacerlo simple :)fuente