首页 > 解决方案 > Ansible 过滤器 stdout_lines 剪切或拆分

问题描述

我有一个包含几行的变量,我想找到具有此值的行,并且在拆分后基于分隔符并仅取该特定行的第一个值。

Task:1
   - debug:
       var: blabla.stdout_lines

Output
  blabla.stdout_lines:
  - 1 test1 aaa
  - 2 test0 bbb
  - 3 test444 ccc


Task:2
   - name: test
     debug:
       msg: "{{ blabla.stdout | select('search', 'test1') | list }}"
Output
  msg:
  -  1 test1 aaa

我想进行拆分,因此它只在task2中直接取值“1”。我试图做一个 textsplit 并切入它,但似乎它不起作用。我正在尝试在 Task2 中添加另一个 Jinja 过滤器。

标签: pythonsplitansiblejinja2

解决方案


正如马修建议的那样,设法使用了 regex_search()

   - name: Extract valuevariables

     set_fact:

        webapps_not: "{{ blabla.stdout | regex_search('.+?(?=no)') }}"


   - name: Show value

     debug: var=blabla_not

推荐阅读