Ansible decprecation warning Вместо использования `result | search` используйте` result is search`, но как? - PullRequest
0 голосов
/ 22 января 2019

У меня есть простая пьеса:

---
- 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#"
    ]
}

Кажется, я не могу найти рабочее решение без фильтра. Чего мне не хватает?

1 Ответ

0 голосов
/ 23 января 2019

Я считаю, что это должно работать (смоделированный тест подходит для меня):


- 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

Использование функции поиска как части фильтра, по-видимому, вызывает предупреждение об устаревании.

...