root@master:~# ansible web -m copy -a ‘dest=/data00/check.sh backup=yes content=123’
10.37.120.9 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/local/bin/python3.13”
},
# 可以看到这里已经备份了
“backup_file”: “/data00/check.sh.153008.2026-07-10@11:21:34~”,
“changed”: true,
“checksum”: “40bd001563085fc35165329ea1ff5c5ecbdbbeef”,
“dest”: “/data00/check.sh”,
“gid”: 0,
“group”: “root”,
“md5sum”: “202cb962ac59075b964b07152d234b70”,
“mode”: “0644”,
“owner”: “root”,
“size”: 3,
“src”: “/root/.ansible/tmp/ansible-tmp-1783653694.0950441-1977803-183011264332546/.source.sh”,
“state”: “file”,
“uid”: 0
}
10.37.99.63 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/local/bin/python3.13”
},
“backup_file”: “/data00/check.sh.160197.2026-07-10@11:21:34~”,
“changed”: true,
“checksum”: “40bd001563085fc35165329ea1ff5c5ecbdbbeef”,
“dest”: “/data00/check.sh”,
“gid”: 0,
“group”: “root”,
“md5sum”: “202cb962ac59075b964b07152d234b70”,
“mode”: “0644”,
“owner”: “root”,
“size”: 3,
“src”: “/root/.ansible/tmp/ansible-tmp-1783653694.092595-1977802-74590298560295/.source.sh”,
“state”: “file”,
“uid”: 0
}
fetch
拉取远程文件到本地,自动按主机名分目录存储,仅支持文件,不支持目录。
核心参数:
src:远程系统上要获取的文件。 这必须是一个文件,而不是一个目录。 后续版本可能会支持递归提取。
dest:保存文件的目录。 例如,如果dest目录是/backup,在主机host.example.com上命名为/ etc/profile的src文件将被保存
示例:
root@master:~# ansible web -m fetch -a ‘src=/etc/hosts dest=/data00’
10.37.120.9 | CHANGED => {
“changed”: true,
“checksum”: “ce9964c64b3d6c002d8a0fdc015009090fa5ccf0”,
# 拉取到本地的这个目录下
“dest”: “/data00/10.37.120.9/etc/hosts”,
“file”: “/etc/hosts”,
“md5sum”: “1b3869c148c86190b1b5c004a91adf0f”,
“remote_checksum”: “ce9964c64b3d6c002d8a0fdc015009090fa5ccf0”,
“remote_md5sum”: null
}
10.37.99.63 | CHANGED => {
“changed”: true,
“checksum”: “a3f1671554da35a2b22a0a4c3d3f611528745891”,
“dest”: “/data00/10.37.99.63/etc/hosts”,
“file”: “/etc/hosts”,
“md5sum”: “bea8ca6ca04563655de18130ddab5d22”,
“remote_checksum”: “a3f1671554da35a2b22a0a4c3d3f611528745891”,
“remote_md5sum”: null
}
lineinfile
修改文件中的行,类似linux工具中的sed工具,确保某一行文本存在于指定的文件中,或者确保从文件中删除指定的文本(即确保指定的文本不存在于文件中),还可以根据正则表达式,替换修改某一行文本
参数:
path :必须参数,指定要操作的文件。
line : 使用此参数指定文本内容。
regexp :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
state :当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。
backrefs :默认是yes,backrefs为yes时,如果没有匹配,则文件保持不变。如果匹配了,把匹配内容替被换为line内容,backrefs为no时,如果没有匹配,则添加一行line。如果匹配了,则把匹配内容替被换为line内容。
insertafter :借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
insertbefore :借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
backup :是否在修改文件之前对文件进行备份。
create :当要操作的文件并不存在时,是否创建对应的文件。
示例:
在指定文件中写入内容
root@master:~# ansible web -m lineinfile -a ‘path=/data00/check.sh line=456’
10.37.120.9 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/local/bin/python3.13”
},
“backup”: “”,
“changed”: true,
“msg”: “line added”
}
10.37.99.63 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/local/bin/python3.13”
},
“backup”: “”,
“changed”: true,
“msg”: “line added”
}
查看一下
root@master:~# ansible web -m command -a ‘cat /data00/check.sh’
10.37.120.9 | CHANGED | rc=0 >>
123
456
10.37.99.63 | CHANGED | rc=0 >>
123
456
blockinfile
插入 / 删除一段多行内容,自带# BEGIN/END ANSIBLE MANAGED BLOCK标记,只管理标记内内容。
参数:
path :必须参数,指定要操作的文件。
block : 使用此参数指定文本块内容。
state :当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。
insertafter :借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
insertbefore :借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
backup :是否在修改文件之前对文件进行备份。
create :当要操作的文件并不存在时,是否创建对应的文件。
marker:默认值# {mark} ANSIBLE MANAGED BLOCK,自定义标记行的模板。{mark} 是一个占位符,会被替换为 BEGIN 和 END
示例:
root@master:~# ansible web -m blockinfile -a “path=/data00/check.sh block=123456789 marker=‘# {mark} ANSIBLE MANAGED BLOCK’”
10.37.120.9 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/local/bin/python3.13”
},
“changed”: true,
“msg”: “Block inserted”
}
10.37.99.63 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/local/bin/python3.13”
},
“changed”: true,
“msg”: “Block inserted”
}