У меня есть роль var I, которую я использую для добавления авторизованных ключей пользователю linux, поэтому foo может быть либо строкой с одним ключом s sh publi c, либо списком из нескольких публикаций c keys.
По умолчанию foo
определено, но пусто, поэтому его можно протестировать, даже если пользователь не установил его, таким образом, никакие связанные задачи не выполняются, если он пуст.
Я обычно использовал бы when: foo
или when: not foo
, и это работало замечательно, за исключением того, что теперь ansible выдает предупреждение об амортизации, говорящее:
[ПРЕДУПРЕЖДЕНИЕ УСТАРЕВАНИЯ]: оценивая None как голое переменная, это поведение уберет go, и вам может понадобиться добавить | bool к выражению в будущем. Также см. Переключатель конфигурации CONDITIONAL_BARE_VARS. Эта функция будет удалена в версии 2.12. Предупреждения об устаревании можно отключить, установив deprecation_warnings = False в ansible .cfg.
Я пытался when: foo|bool
, как упоминалось, но он возвращает false
каждый раз, когда переменная заполняется строкой, которая не является да, да, да ...
foo is defined
не работает, поскольку переменная определена
foo != ""
не работает, поскольку переменная пуста, а не пустая строка
foo | длина> 0 не работает, потому что ноль не имеет длины
Я, честно говоря, вне идей здесь.