";“正确的道路”;对照Ansible中的列表检查变量的步骤

";“正确的道路”;对照Ansible中的列表检查变量的步骤,ansible,ansible-2.x,Ansible,Ansible 2.x,下面的Ansible playbook代码可以工作,但它依赖于一个外壳输出到egrep。我想知道为我个人的成长做这件事的“正确方法”(使用Ansible模块、Jinja2过滤器等,但不使用外部二进制文件) 我尝试了几种方法,但找不到一种“本地”的有效解决方案。(对我使用ini过滤器的尝试说得越少越好!) 下面的剧本符合你的要求吗 - name: "Fail if {{ exclude_file }} exists and {{ username }} found" fail: msg

下面的Ansible playbook代码可以工作,但它依赖于一个外壳输出到egrep。我想知道为我个人的成长做这件事的“正确方法”(使用Ansible模块、Jinja2过滤器等,但不使用外部二进制文件)

我尝试了几种方法,但找不到一种“本地”的有效解决方案。(对我使用ini过滤器的尝试说得越少越好!)


下面的剧本符合你的要求吗

- name: "Fail if {{ exclude_file }} exists and {{ username }} found"
  fail:
    msg: "{{ username }} found in {{ exclude_file }}"
  when:
    - exclude_file is exists
    - lookup('file', exclude_file) is search(username)

我想根据列表检查变量的正确方法是
当:exclude_list中的username
时。真正的问题是如何从任意位置的任意格式和命名的文件转到
exclude\u list
变量?不完全是,但你给我指出了正确的方向<代码>-查找('file',exclude_file)是匹配的(['[\t]*',用户名[\t]*']| join)
- name: "Fail if {{ exclude_file }} exists and {{ username }} found"
  fail:
    msg: "{{ username }} found in {{ exclude_file }}"
  when:
    - exclude_file is exists
    - lookup('file', exclude_file) is search(username)