Ansible специальный поиск

ansible all -m authorized_key -a 'name=automation key="{{lookup('file','/home/automation/.ssh/id.pub') }}' -C

ansible all -m authorized_key -a 'name=automation key="{{lookup('file','/home/automation/.ssh/id.pub') }}' -CD

ansible all -m authorized_key -a 'name=automation key=' {{lookup('file','/home/automation/.ssh/id.pub') }}' -CD

ansible all -m authorized_key -a "name=automation key=' {{lookup('file','/home/automation/.ssh/id.pub') }}" -CD

ОШИБКА! не удалось разделить аргументы, либо несбалансированный блок jinja2, либо кавычки: name=automation key=' {{lookup('file','/home/automation/.ssh/id.pub') }}

Я перепробовал все эти комбинации, но ни одна из них не работает.
Каков правильный способ добиться этого?


person Dennis    schedule 12.07.2020    source источник


Ответы (2)


Вы должны избежать кавычек в своей оболочке И убедиться, что после получения все в порядке на доступной стороне. В этом случае использование одинарных кавычек в качестве самых внешних кавычек, вероятно, является самым сложным выбором. Вот четыре (не исчерпывающих) возможных решения (с использованием двойных кавычек в качестве самой внешней кавычки):

ansible all -m authorized_key -a "name=automation key='{{ lookup(\"file\", \"/home/automation/.ssh/id.pub\") }}'" -CD

ansible all -m authorized_key -a "name=automation key='{{ lookup(\\'file\\', \\'/home/automation/.ssh/id.pub\\') }}'" -CD

ansible all -m authorized_key -a "name=automation key=\"{{ lookup('file', '/home/automation/.ssh/id.pub') }}\"" -CD

ansible all -m authorized_key -a "name=automation key=\"{{ lookup(\\\"file\\\", \\\"/home/automation/.ssh/id.pub\\\") }}\"" -CD
person Zeitounator    schedule 12.07.2020

Поскольку аргументы модуля (-a) подразумевают, что все после ‹argument_name›= является строкой, вам не нужны дополнительные кавычки после '=', и вы можете использовать поиск без дополнительных кавычек вокруг него:

ansible all -m authorized_key -a "name=automation key={{ lookup('file', '/home/automation/.ssh/id.pub') }}"

or

ansible all -m authorized_key -a 'name=automation key={{ lookup("file", "/home/automation/.ssh/id.pub") }}'

Просто убедитесь, что вы используете разные типы кавычек.

Думайте об аргументах модуля в -a как о тех же аргументах в формате yaml, вам не нужно их защищать, если только их значение не начинается со специального символа.

person Vsevolod    schedule 11.05.2021