Ansible: подсчитать элементы и использовать в условной проверке - PullRequest
2 голосов
/ 16 июня 2020

У меня есть playbook, который я использую для определений key: value, например:

x_interfaces:
  - eno1
  - eno2

И в другом playbook (который включает в себя этот, я хотел бы сделать условную проверку, как это :

- name: debug message
  debug:
    msg: There is more then 1 interface in the machine
  when: x_interfaces|length > '1'

Но это не работает. Я получаю это сообщение об ошибке:

The error was: Unexpected templating type error occurred on ({% if x_interfaces|length > '1' %} True {% else %} False {% endif %}): '>' not supported between instances of 'int' and 'str'

Что я делаю не так? Если я использую x_interfaces|int > '1', он также не работает.

1 Ответ

2 голосов
/ 16 июня 2020

length возвращает целое число. '1' - строка. Поскольку в сообщении об ошибке указано, что сравнение больше не может выполнить операцию между строкой и целым числом.

Чтобы это работало, вам просто нужно изменить '1' на 1. Теперь вы сравниваете целое число с целым числом.

- name: debug message
  debug:
   msg: There is more then 1 interface in the machine
  when: x_interfaces|length > 1
...