проблема с ansible при использовании ansible.builtin.shell

Это может быть лучше сделано с помощью awk, в котором вы можете использовать машинный метод состояния -:

awk '/^reader_1 = newcamd\({/ { section_found = 1} /})/ { section_found = 0 } section_found && /port = 27020,$/ { sub(/27020,$/, "22443,") } { print }' file1 > file2 && mv file2 file1

Пояснение:

Установить флаг при обнаружении начала раздела:

/^reader_1 = newcamd\({/ {
    section_found = 1
}

Очистить флаг при обнаружении конца раздела:

/})/ {
    section_found = 0
}

Подставить новый номер порта в правой части и в правой строке:

section_found && /port = 27020,$/ {
    sub(/27020,$/, "22443,")
}

Печать всех строк:

{
    print
}

Отправить вывод в файл2 (временный файл):

> file2

Если все прошло успешно, переименуйте файл2 в файл1:

&& mv file2 file1

Вы можете сделать регулярные выражения настолько свободными или жесткими, насколько вам нужно.

Этот тип кода легче читать и поддерживать, чем код sedили ed, особенно если вы отформатируете его так же, как в моем объяснении.

0
06.02.2021, 18:00
1 ответ

Это связано с ошибкой в ​​Ansible, которая появилась при переходе на FQCN:https://github.com/ansible/ansible/pull/71824

В качестве временного решения вы можете просто заменить ansible.builtin.shellстарым именем -школы shell.

5
18.03.2021, 22:32

Теги

Похожие вопросы