Проверьте, существует ли элемент в Ansible - PullRequest
0 голосов
/ 22 апреля 2020

В моей роли Ansible у меня есть:

rcube_plugins_repo:
    - name: 'account_details'
      repo: 'https://github.com/texxasrulez/account_details'
      config: 'yes'
    - name: 'delete_old'
      repo: 'https://github.com/ron4mac/roundcube_delete_old'
and so on...

В одной из моих задач мне нужно проверить, существует ли account_details в rcube_plugins_repo

Как мне это сделать? что?

Я думал о чем-то вроде:

when: "rcube_plugins_repo.name['account_details'] is defined"

Но это не работает, и я уверен, как правильно написать это.

Большое спасибо!

1 Ответ

1 голос
/ 22 апреля 2020

rcube_plugins_repo - это список dict, поэтому rcube_plugins_repo.name не будет работать в первую очередь. Даже если вы получили значение с этим, вам пришлось бы сравнивать с account_details, не проверяя субэлемент account_details.

selectattr Фильтр позволяет фильтровать список диктует согласно фильтру. Здесь вы хотите отфильтровать значение атрибута name.

Я попытался выполнить следующее, похоже, оно работает:

 when: "{{ rcube_plugins_repo|selectattr('name', 'eq', 'account_details')|list }}"

Если отфильтрованный список пуст, условие не встретятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...