我想取消这行内容,但保留“ privides UDP / TCP ...”的注释:
# provides UDP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")
# provides TCP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")
这是我当前取消注释一行的任务:
- name: Change rsyslog configuration
lineinfile:
dest: /etc/rsyslog.conf
regex: '^module(load="imudp")'
line: 'module(load="imudp")'
但是我如何扩展此任务以取消注释更多行?我认为可以在regex中添加变量并使用循环with_items解析值来完成,但是不知道如何实现。最佳做法是什么?
Module lineinfile会将line放入文件中,即使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:
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")