Ansible中无法从列表筛选含GCC的元素问题求助
Ansible列表筛选错误解决:生成器对象转换问题
问题根源
select过滤器返回的是生成器迭代器,而非直接可用的列表,Ansible无法将这种迭代器作为变量值存储,因此抛出错误。
修正代码
- name: set route set_fact: route: "GCC" - name: filter pool name set_fact: filtered_pool: "{{ pool | select('search', route) | list }}"
关键说明
- 添加
| list过滤器,把select返回的生成器转换为标准列表,此时filtered_pool会得到预期的匹配结果:["P-GCC.COM_443"]。 - 若仅需简单子串匹配(而非正则),Ansible 2.10+版本可使用更直观的
contains过滤器替代search:filtered_pool: "{{ pool | select('contains', route) | list }}"
内容的提问来源于stack exchange,提问作者Ravi Shankar
相关产品推荐
相关产品推荐

