繁体   English   中英

使用 Jinja2 过滤器和 Ansible 格式化字符串列表

[英]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_replacemap结合使用并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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM