Посмотрите на блочную секцию blockinfile,https://docs.ansible.com/ansible/2.5/modules/blockinfile_module.html
Вот пример роли
user1$ cat testblock/tasks/main.yml
---
- name: Testing blockinfile
blockinfile:
path: /tmp/testfile.txt
block: |
this is a test1
blah
blah
this is test2
hello
...
А вот и сборник пьес:
user1$ cat testblock.yml
---
- hosts: localhost
roles:
- testblock
...
Запуск ansible-playbook./testblock.yml
создает следующий файл:
user1$ cat /tmp/testfile.txt
# BEGIN ANSIBLE MANAGED BLOCK
this is a test1
blah
blah
this is test2
hello
# END ANSIBLE MANAGED BLOCK
Одна строка
ifconfig_"${Bridge}"="addm ${NIC}"
совпадает с
"ifconfig_$Bridge=addm $NIC"
(фигурные скобки не нужны, и вся строка может быть заключена в один набор двойных кавычек)
Поскольку вы использовали двойные кавычки для заключения в кавычки двух отдельных частей одной и той же строки, ShellCheck поинтересовался, возможно ли, что вы имели в виду, что «внутренняя пара» кавычек является буквальной и действительно частью строки, т. е. имели ли вы в виду написать fconfig_"${Bridge}\"=\"addm ${NIC}"
.
Поскольку вы этого не сделали, было бы лучше переписать строку, как я показал ранее, просто чтобы было ясно, что это одна строка без встроенных кавычек.
Обратите внимание, что вы не сделали ошибки в своем коде в отношении цитирования здесь, и что ShellCheck просто спрашивает о вашем намерении, потому что это (возможно )распространенная ошибка, когда вы делаете нужны буквальные двойные кавычки внутри строки.
Если вам не нравится ваш способ цитирования строки, вы можете отключить предупреждение ShellCheck с помощью директивы в комментарии перед затронутой строкой:
# shellcheck disable=SC2140
sysrc ifconfig_"${Bridge}"="addm ${NIC}"
По сути, это означает: «Я знаю, что делаю, и правило SC2140 здесь не применяется, большое спасибо».
Если вы перейдете по предложенной ссылке объяснения для SC2140 , вы получите этот текст,
Проблемный код:
echo "<img src="foo.png" />" > file.html
или
export "var"="42"
Правильный код:
echo "<img src=\"foo.png\" />" > file.html
или
export "var=42"
Посмотрите на второй пример -структура почти идентична вашему коду
sysrc ifconfig_"${Bridge}"="addm ${NIC}"
Вам говорят проверить, должны ли двойные кавычки быть частью строки или у вас просто есть лишние кавычки, которые вам не нужны. В вашем случае это второй вариант,и эту строку, вероятно, лучше записать как
sysrc "ifconfig_${Bridge}=addm ${NIC}"