[英]Ansible: Replace word in file
我正在制作Ansible手册来设置CSF。 除了最后一部分,我已完成所有工作。
我想在/etc/csf/csf.conf
文件中禁用端口22。 因此, TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
需要删除22
。 我不想替换整行,因为某些行不同,例如某些端口打开了2087
端口或2222
。 有什么办法只能过滤22
吗?
先感谢您!!
您有几种选择:
此解决方案使用更换模块,以寻找与开头的行TCP_OUT =
和替换,22,
与,
在该行。
tasks:
- name: Strip port 22
replace:
dest: /etc/csf/csf.conf
regexp: '^TCP_OUT\s*=\s*(.*),22,(.*)$'
replace: 'TCP_OUT = \1,\2'
代码工作证明
>>> TCP_OUT = '20,21,22,25,53,80,110,113,443,587,993,995,2087,2222,22'
>>> print(','.join([port for port in TCP_OUT.split(',') if port != '22']))
'20,21,25,53,80,110,113,443,587,993,995,2087,2222'
您可以使用template 。 复制/etc/csf/csf.conf
文件,并在TCP_OUT行中将其替换为ansible变量:
TCP_OUT = {{ port_list }}
然后,在变量中预先设置列表,并在文件中添加所需端口。
vars:
port_list = "20,21,25,53,80,110,113,443,587,993,995"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.