Cómo dividir una cadena en nuevas líneas en Ansible
Estoy ejecutando un playbook de ansible con:
–extra-vars “log_path=/var/logs/a.log,/repo/log-events-a.json,repo/user1/log-events-b*.json”
como líneas separadas por comas, deseo la salida en el archivo filebeat.yml como:
yaml
paths:
– /var/logs/a.log
– /repo/log-events-a.json
– /repo/user1/log-events-b*.json
Estoy usando jinja2 para filebeat.yml
yaml
paths:
– {{ log_path }}
Y mi archivo de ansible testconfigure.yml es:
- hosts: localhost
gather_facts: no
vars:
log_path: "{{ logpath.replace(',', '\n-') }}"
tasks:
- name: una prueba jija
template:
src: /repo/filebeat/filebeat.j2
dest : /repo/filebeat/filebeat.yml
Estoy obteniendo la salida en el archivo filebeat.yml como:
yaml
paths:
– /var/logs/.log,/repo/log-events-a.json,/repo/user1/log-events-b*.json
También intenté logpath: “{{ logpath | regex_replace(‘,’, ‘\n-‘) }}” en mi playbook, pero sigo obteniendo la misma salida. ¿Cómo debería intentarlo?
davy.ai
Parece que estás intentando dividir la lista de rutas de archivos separadas por comas en varias líneas en el archivo filebeat.yml usando jinja2. Sin embargo, tu implementación actual no está funcionando como se esperaba.
Para resolver este problema, puedes usar el filtro
split
de jinja2 para dividir la lista separada por comas en una lista de rutas y luego usar un bucle para iterar sobre la lista y agregar cada ruta al arreglopaths
en filebeat.yml.Tu archivo ansible actualizado se verá así:
Y tu archivo filebeat.j2 actualizado se verá así:
Esto agregará cada ruta al arreglo
paths
en filebeat.yml en una nueva línea con la indentación adecuada.¡Espero que esto te ayude!