Ansible, магия и смирение
Изучая вчерашний кейс с передачей переменных в Ansible, имею сказать, что вероятно проблема в том, что любая передаваемая через командную строку переменная передается как строка. Используем волшебные много "-vvvvvvvvv" при запуске (то есть дебаг-мод) и видим:
"usersinwork=['user11','user2']"
То есть в принципе мы передавали строку, а дальше должно сработать автоопределение типа. И похоже оно работает далеко от идеала и воспринимает это тоже как строку. Но почему все тот же модуль debug выдает у нас нормальный лист? Открываем документацию самого модуля debug.py:
var:
description:
- A variable name to debug.
- Mutually exclusive with the C(msg) option.
- Be aware that this option already runs in Jinja2 context and has an implicit C({{ }}) wrapping,
so you should not be using Jinja2 delimiters unless you are looking for double interpolation.
type: str
То есть он по определению принимает на вход строку. А дальше уже действует его встроенное определение типов, работающее похоже лучше, чем общее у Ansible. В общем приведенных костыль по подготовке списка из строки ручками через set_fact не такой уж и костыль. Просто заранее готовим дату в нужном нам формате, "пьем чаек и никакого суецыда".
В будущем, когда изучу получше Python, надо будет не забыть залезть залезть в дебаг-режим Python-машины, чтобы в реальном времени посмотреть по переменным, как же он обрабатывает все это.