![](/img/trans.png)
[英]Parsing output in ansible using jinja2 template (mapping list of strings to list of strings)
[英]Format list of strings using Jinja2 filter with Ansible
我有一个类似的列表
my_apps:
- bootstrap-client
- theme-client
- engine-client
我想把这个数组变成一个类似于
$LOCAL_DIR/bootstrap-client-*.war $LOCAL_DIR/theme-client-*.war $LOCAL_DIR/engine-client-*.war
这可以使用 Jinja2 过滤器吗? 在 Ansible 模板中?
您可以将 Ansible 过滤器regex_replace
与map
结合使用并join
过滤器来实现此目的。
所以必须正则表达式匹配整个列表项^(.*)$
并在替换中使用\\1
反向引用它。
给你:
"{{ my_apps | map('regex_replace', '^(.*)$', '$LOCAL_DIR/\\1-*.war' ) | join(' ') }}"
鉴于剧本:
- hosts: all
gather_facts: yes
tasks:
- debug:
msg: "{{ my_apps | map('regex_replace', '^(.*)$', '$LOCAL_DIR/\\1-*.war' ) | join(' ') }}"
vars:
my_apps:
- bootstrap-client
- theme-client
- engine-client
这产生:
PLAY [all] ********************************************************************************************************
TASK [debug] ******************************************************************************************************
ok: [localhost] =>
msg: $LOCAL_DIR/bootstrap-client-*.war $LOCAL_DIR/theme-client-*.war $LOCAL_DIR/engine-client-*.war
PLAY RECAP ********************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.