Модуль lineinfile поместит строку в файл, даже если regex не соответствует.
Задание ниже
tasks:
- lineinfile:
# firstmatch: true
dest: rsyslog.conf
regex: '^#\s*{{ item.regex }}(.*)$'
line: '{{ item.line }}'
loop:
- regex: 'module\(load="imudp"\)'
line: 'module(load="imudp")'
- regex: 'input\(type="imudp" port="514"\)'
line: 'input(type="imudp" port="514")'
дает
# provides UDP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imudp")
input(type="imudp" port="514")
и с «firstmatch: true» дает
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")
Модуль replace заменит все экземплярышаблон в файле
- replace:
dest: rsyslog.conf
regexp: '^#\s*{{ item.regex }}(.*)$'
replace: '{{ item.replace }}'
loop:
- regex: 'module\(load="imudp"\)'
replace: 'module(load="imudp")'
- regex: 'input\(type="imudp" port="514"\)'
replace: 'input(type="imudp" port="514")'
дает
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imudp")
input(type="imudp" port="514")