Назад | Перейти на главную страницу

Переменные в специальных командах Ansible

Вопрос:

Как я могу оценить (дополнительные) переменные внутри специальной команды?

Есть ли способ заставить массивы работать внутри специальных команд?

Задний план: Я хочу убедиться, что на хосте работают несколько контейнеров (в моем примере это «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 }}'

Хотя я не понимаю, что делать это, вы можете просто использовать значение переменной там, где оно вам нужно напрямую ...

Это также не поможет вам в цикле по спискам, это полностью зависит от модуля, поддерживает ли он несколько значений в параметре или нет, в противном случае вам придется реализовать цикл в сценарии оболочки.