前言:
lineinfile模块,功能有点类似sed
常用功能:对文件的行替换、插入、删除
PS:
替换/插入:如果有重复的,都是匹配最后一个 ,
如果不加backrefs项, 替换/插入如无匹配者,则将line所指定的行插入到文件的末尾
删除:如果有重复的,全部删除
常用参数:
path/dest: 目标文件绝对路径+文件名,必须参数
line: 替换/插入的内容
regexp: 待匹配内容
insertbefore: 匹配行前面插入
insertafter: 匹配行面插入
state: 删除匹配行,需要将值设为absent,默认值present。
backup: 是否在修改文件之前对文件进行备份。 yes/no
create: 当要操作的文件并不存在时,是否创建对应的文件。yes/no
backrefs:yes/no
1.backrefs为no时,如果没有匹配,则添加一行line。如果匹配了,则把匹配内容替被换为line内容。
2.backrefs为yes时,如果没有匹配,则文件保持不变。如果匹配了,把匹配内容替被换为line内容。
举个栗子:
vim lineinfile.yaml
- hosts: node
gather_facts: no
become: yes
become_method: sudo
tasks
1、备份文件
- name: 'backup file'
lineinfile:
path: /root/config
backup: yes
line: state=present
2、替换整行
- name: '替换'
lineinfile:
path: /root/config
regexp: '^SELINUX='
line: '此行已被我替换了'
3、在匹配行前面插入
- name: '在匹配行前面插入'
lineinfile:
path: /root/config
insertbefore: 'SELINUXTYPE=targeted'
line: '成功在匹配行前面插入一行'
4、在匹配行后面插入
- name: "在匹配行后面插入"
lineinfile:
dest: /root/config
insertafter: 'minimum - Modification of targeted policy.'
line: 成功在匹配行后面插入一行'
5、删除匹配行
- name: '删除匹配行'
lineinfile:
dest: /root/config
regexp: 'J\+sZc\_j\!s\@d\#x'
state: absent
6、添加
- name: 'add a line'
lineinfile:
dest: /root/config
regexp: 'add a line!'
line: '我出现代表没有匹配项'
7、没有匹配,保持文件不变
- name: 'backrefs'
lineinfile:
dest: /root/config
backrefs: yes
regexp: 'add a line~~~'
line: '没有匹配项我也不会出现在文件中'
8、新建
- name: 'create'
lineinfile:
dest: /root/test.txt
create: yes
line: state=present
9.insertafter insertbeforce也支持正则
- name: Modify Zabbix Super User
lineinfile:
path: /etc/sudoers
insertafter: '^root'
line: 'zabbix ALL = NOPASSWD: ALL'
标签:12,匹配,name,lineinfile,插入,ansible,line,root
From: https://www.cnblogs.com/yangtao416/p/16707109.html