variables - 如何在 Ansible 中取消注释多行?
问题描述
我想取消注释这一行,但留下“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")'
但是如何扩展此任务以取消注释更多行?我认为可以在正则表达式中添加变量并使用循环with_items解析值,但不知道如何实现。这样做的最佳做法是什么?
解决方案
即使正则表达式不匹配,模块lineinfile也会将该行放入文件中。
下面的任务
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")
推荐阅读
- angular - Angular 5 HTTP 拦截器错误消息
- java - 您如何解决 intelliJ 中的“编译单元不是 SOURCE 类型”错误?
- javers - javers 比较对象中的列表给出不一致的结果
- java - 如何访问 @Configuration 或 @SpringBootApplication 类中的 ServletContext
- nativescript - Nativescript - Iphone 10 的自定义 CSS
- android - Firebase 的 PDF 缩略图生成
- node.js - ReferenceError:使用 xadesjs 时未定义 regeneratorRuntime
- vb.net - (T, S)的函数泛型,S继承T
- json - 在 reactjs 中解析 JSON 对象
- c# - XmlSerializer 在 reader.Read() 之后中止读取