blockinfile模块和lineinfile模块
一、blockinfile模块概述
blockinfile模块用来在文件中插入文本块,插入的文本块会有一个标记,方便修改和删除
二、blockinfile模块常用参数
参数名 | 描述信息 |
---|---|
path | 操作的文件对象 |
block | 也可用content,指定内容。 |
marker | 使用marker参数自定义”标记”,方便我们通过对应的标记找到对应的内容 |
state | 默认是present,state=absent,则表示从文件中删除对应标记的内容。 |
backup | 在修改文件之前是否对文件进行备份,默认是no. |
create | 当要操作的文件并不存在时,是否创建对应的文件。 |
三、范例
1、创建/tmp/test文件,并初始化文件内容hello world
[root@node1 ~]# ansible group1 -m raw -a 'echo "hello world">/tmp/test'
192.168.8.122 | CHANGED | rc=0 >>
Shared connection to 192.168.8.122 closed.
[root@node1 ~]# ansible group1 -m raw -a 'cat tmp/test'
192.168.8.122 | CHANGED | rc=0 >>
hello world
2、使用marker插入文本“start httpd、stop httpd \restart httpd”,插入文本内容使用 httpd server进行标记。
[root@node1 ~]# ansible group1 -m blockinfile -a 'path=/tmp/test block="start httpd \n stop ttpd \n restart httpd " marker="#{mark} httpd server"'
192.168.8.122 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"msg": "Block inserted"
}
[root@node1 ~]# ansible group1 -m raw -a 'cat tmp/test'
192.168.8.122 | CHANGED | rc=0 >>
hello world
#BEGIN httpd server
start httpd
stop ttpd
restart httpd
#END httpd server
3、删http server标记的文本内容
[root@node1 ~]# ansible group1 -m blockinfile -a 'path=/tmp/test state=absent marker="#{mark} httpd server" '
192.168.8.122 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"msg": "Block removed"
}
[root@node1 ~]# ansible test -m raw -a 'cat tmp/test'
192.168.8.122 | CHANGED | rc=0 >>
hello world
Shared connection to 192.168.8.122 closed.
一、lineinfile模块概述
lineinfile模块和blockinfile模块功能类似,对文件行进行操作,默认添加文件是在行尾。
二、line模块常用参数
参数名 | 描述信息 |
---|---|
path | 操作的文件对象 |
line | 指定行内容。 |
state | 默认值为present,state=absent表示删除。 |
backup | 是否在修改文件之前对文件进行备份。 |
insertbefore | 插在匹配值之前 |
insertafter | 插在匹配值之后,在该该选项不写的情况下默认插在文本最后 |
create | 当要操作的文件并不存在时,是否创建对应的文件。 |
三、范例
1、添加"这是测试行"到/tmp/test文件中,如果不指定位置,默认是在末尾添加。
oot@node1 ~]# ansible group1 -m lineinfile -a 'path=/tmp/test line="这是测试行" '
192.168.8.122 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup": "",
"changed": true,
"msg": "line added"
}
[root@node1 ~]# ansible test -m raw -a 'cat tmp/test'
192.168.8.122 | CHANGED | rc=0 >>
hello world
这是测试行
Shared connection to 192.168.8.122 closed.
2、使用insertbefore指定插入到"hello world"行之前,insertafter则相反。
[root@node1 ~]# ansible test -m lineinfile -a 'path=/tmp/test line="这是测试行-行首" insertbefore="hello world" '
192.168.8.122 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup": "",
"changed": true,
"msg": "line added"
}
[root@node1 ~]# ansible test -m raw -a 'cat tmp/test'
192.168.8.122 | CHANGED | rc=0 >>
这是测试行-行首
hello world
这是测试行
Shared connection to 192.168.8.122 closed.