Вопрос:
Как я могу оценить (дополнительные) переменные внутри специальной команды?
Есть ли способ заставить массивы работать внутри специальных команд?
Задний план: Я хочу убедиться, что на хосте работают несколько контейнеров (в моем примере это «test01» и «test02»)
Я уже узнал (поправьте меня, если я ошибаюсь), что я не могу использовать массив или with_items
в специальных командах, так что это не работает:
ansible all -i ,localhost -m docker_container -c local -a 'name=["test01","test02"] state=started command="sleep infinity"
Сейчас попробовал, но тоже не вышло:
ansible all -i ,localhost -m docker_container -c local -e MYVAR='[test01,test02]' -a 'name=MYVAR state=started command="sleep infinity"
... или даже ...
ansible all -i ,localhost -m shell -c local -e MYVAR='[test01,test02]' -a 'echo MYVAR'
Или это -e
(--extra-vars
) неверный параметр?
(Среда: ansible 2.9.10 в Linux (Manjaro))
То же, что и в любом playbook или файле переменных, с использованием фигурных скобок:
ansible all -i ,localhost -m shell -c local -e MYVAR='[test01,test02]' -a 'echo {{ MYVAR }}'
Хотя я не понимаю, что делать это, вы можете просто использовать значение переменной там, где оно вам нужно напрямую ...
Это также не поможет вам в цикле по спискам, это полностью зависит от модуля, поддерживает ли он несколько значений в параметре или нет, в противном случае вам придется реализовать цикл в сценарии оболочки.