Ansible如何在换行符中拆分字符串
Ansible how to split string in newline
我 运行 在 ansible 剧本中有:
--extra-vars "log_path=/var/logs/a*.log,/repo/log-events-a*.json,repo/user1/log-events-b*.json"
作为逗号分隔行,我希望 filebeat.yml 文件中的输出为
paths:
- /var/logs/a*.log
- /repo/log-events-a*.json
- /repo/user1/log-events-b*.json
我正在为 filebeat.yml
使用 jinja2
paths:
- {{ log_path }}
我的ansible文件testconfigure.yml是
- hosts: localhost
gather_facts: no
vars:
log_path: "{{ logpath.replace(',', '\n-')}}"
tasks:
- name: a jija test
template:
src: /repo/filebeat/filebeat.j2
dest : /repo/filebeat/filebeat.yml
我在 filebeat.yml 文件中得到的输出为:
paths:
- /var/logs/*.log,/repo/log-events-a*.json,/repo/user1/log-events-b*.json
我也在我的剧本中尝试了 logpath: "{{ logpath | regex_replace(',', '\n-') }"
,但仍然得到相同的输出。
我该如何尝试?
创建一个 j2 文件:
paths:
{% for log in log_path %}
- {{ log }}
{% endfor %}
剧本:
- hosts: localhost
vars:
log_path: "{{ logpath.split(',') }}"
tasks:
- name: templating
template:
src: filebeat.j2
dest: filebeat.yml
和要调用的命令:
ansible-playbook yourplaybook.yml --extra-vars "logpath=/var/logs/a*.log,/repo/log-events-a*.json,repo/user1/log-events-b*.json
结果:
paths:
- /var/logs/a*.log
- /repo/log-events-a*.json
- repo/user1/log-events-b*.json
如果你只想创建一个var文件,不需要模板:
- name: create var file
copy:
content: "{{ log_path | to_nice_yaml }}"
dest: filebeat.yml
结果:
paths:
- /var/logs/a*.log
- /repo/log-events-a*.json
- repo/user1/log-events-b*.json
我 运行 在 ansible 剧本中有:
--extra-vars "log_path=/var/logs/a*.log,/repo/log-events-a*.json,repo/user1/log-events-b*.json"
作为逗号分隔行,我希望 filebeat.yml 文件中的输出为
paths:
- /var/logs/a*.log
- /repo/log-events-a*.json
- /repo/user1/log-events-b*.json
我正在为 filebeat.yml
使用 jinja2 paths:
- {{ log_path }}
我的ansible文件testconfigure.yml是
- hosts: localhost
gather_facts: no
vars:
log_path: "{{ logpath.replace(',', '\n-')}}"
tasks:
- name: a jija test
template:
src: /repo/filebeat/filebeat.j2
dest : /repo/filebeat/filebeat.yml
我在 filebeat.yml 文件中得到的输出为:
paths:
- /var/logs/*.log,/repo/log-events-a*.json,/repo/user1/log-events-b*.json
我也在我的剧本中尝试了 logpath: "{{ logpath | regex_replace(',', '\n-') }"
,但仍然得到相同的输出。
我该如何尝试?
创建一个 j2 文件:
paths:
{% for log in log_path %}
- {{ log }}
{% endfor %}
剧本:
- hosts: localhost
vars:
log_path: "{{ logpath.split(',') }}"
tasks:
- name: templating
template:
src: filebeat.j2
dest: filebeat.yml
和要调用的命令:
ansible-playbook yourplaybook.yml --extra-vars "logpath=/var/logs/a*.log,/repo/log-events-a*.json,repo/user1/log-events-b*.json
结果:
paths:
- /var/logs/a*.log
- /repo/log-events-a*.json
- repo/user1/log-events-b*.json
如果你只想创建一个var文件,不需要模板:
- name: create var file
copy:
content: "{{ log_path | to_nice_yaml }}"
dest: filebeat.yml
结果:
paths:
- /var/logs/a*.log
- /repo/log-events-a*.json
- repo/user1/log-events-b*.json