De la misma manera que hay un módulo lineinfile
para 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 usarlineinfile
es 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_items
bucle:fuente
msg: this module requires key=value arguments
. El ejemplo dado tiene esto correcto: simplemente no seguí el ejemplo.Puedes intentar usar en su
blockinfile
lugar.Puedes hacer algo como
fuente
blockinfile
módulo ha funcionado maravillosamente cada vez que he elegido usarlo. Especialmente me encanta el comportamiento intuitivo de lasinsertafter
/insertbefore
opciones.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
\n
el 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
AuthorizedKeysCommand
yAuthorizedKeysCommandUser
a 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
lineinfile
módulo conwith_items
también variable incluidavars
aquí para hacerlo simple :)fuente