Ansible Depreaction警告而不是使用'result | search'use'result is search',但是如何使用呢?
我有一个简单的剧本:Ansible Depreaction警告而不是使用'result | search'use'result is search',但是如何使用呢?,ansible,telnet,deprecation-warning,Ansible,Telnet,Deprecation Warning,我有一个简单的剧本: --- - name: cat resolv.conf telnet: user: "{{ foxuser }}" password: "{{ foxpass }}" login_prompt: "login:" prompts: "#" command: - grep 192.168.178.6 /etc/resolv.conf register: resolv changed
---
- name: cat resolv.conf
telnet:
user: "{{ foxuser }}"
password: "{{ foxpass }}"
login_prompt: "login:"
prompts: "#"
command:
- grep 192.168.178.6 /etc/resolv.conf
register: resolv
changed_when: not( resolv.output | join('') | search('nameserver'))
notify: update resolv.conf
这是可行的,但它会抛出一个弃用警告
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|search` use `result is search`. This feature will be removed in version 2.9.
我试过:
changed_when: not('nameserver' in resolv.output )
但这似乎总是正确的,即使nameserver
处于resolv.output
中。不知何故,join
似乎是表达式的一个重要部分
请注意,resolv
包含:
"resolv": {
"changed": false,
"failed": false,
"output": [
" grep 192.168.178.6 /etc/resolv.conf\r\nnameserver 192.168.178.6\r\n[root@foxboard /root]1068#"
]
}
如果没有过滤器,我似乎找不到有效的解决方案。我遗漏了什么?我认为这应该有效(模拟测试对我有用):
使用搜索功能作为过滤器的一部分似乎是触发弃用警告的原因。我认为这应该会起作用(模拟测试对我有用):
将搜索功能用作筛选器的一部分似乎是触发弃用警告的原因
- name: cat resolv.conf
telnet:
user: "{{ foxuser }}"
password: "{{ foxpass }}"
login_prompt: "login:"
prompts: "#"
command:
- grep 192.168.178.6 /etc/resolv.conf
register: resolv
changed_when: not ( resolv.output | join('') ) is search('nameserver')
notify: update resolv.conf