文章目录
- Copy和Fetch
- File模块
Copy和Fetch
copy和fetch模块实践
- copy模块需要注意的点:在收集日志之前需要对文件先进行改名或者备份
- fetch模块需要注意的点:复制的源文件的路径必须是文件不能是目录
- 建议全部使用绝对路径,别使用相对路径
- 确保ansible有足够的权限去访问源文件以及源目录
需求1:将控制器中的文件 root/data/test 复制到192.168.1.100/tmp中,复制过程中将其所属指定为root:root,权限设置755,然后test输入 hello openEuler1
mkdir -p /root/data cd /root/data touch testansible 192.168.1.100 -m copy -a "src=/root/data/ dest=/tmp/data/ owner=root group=root mode=755" #将文件传送到 ansible 192.168.1.100 -m copy -a "content='hello openEuler1' dest=/tmp/data/test" #被控制端文件添加内容 ansible 192.168.1.100 -a "cat /tmp/data/test" #查看被控制端文件内容
ansible 192.168.1.100 -m fetch -a "src=/tmp/data/test dest=/tmp" #被控制端文件拿回到控制端 ls /tmp/192.168.1.100/tmp/data cat test #到此完成文件传送到被控制端并且添加文本内容,最后回到控制端
注意
#如果在控制端将文件修改之后执行下面的命令会对文件内容进行覆盖 ansible 192.168.1.100 -m copy -a "src=/root/data/ dest=/tmp/data/ owner=root group=root mode=755" #但是如果加上 force 参数之后,不会对文本内容进行覆盖 ansible 192.168.1.100 -m copy -a "force=no src=/root/data/ dest=/tmp/data/ owner=root group=root mode=755"
File模块
之前使用 command 模块创建文件存在告警,这说明创建文件有专门的模块去处理
File模块实践
需求:被控制主机192.168.1.100 中创建目录 /tmp/file/data,归属用户和组指定为 test:test,权限设置为 755,然后在该目录下创建文件 test,并为 test 创建软链接指向 /tmp/link,最后删除目录 /tmp/file
#创建文件夹并且指定所属用于所属组且指定权限 ansible 192.168.1.100 -m file -a "path=/tmp/file/data owner=test group=test mode=755 state=directory" #创建文件 ansible 192.168.1.100 -m file -a "path=/tmp/file/data/test state=touch" #创建软链接,源文件路径/tmp/file/data/test,指定软链接路径 /tmp/link ansible 192.168.1.100 -m file -a "src=/tmp/file/data/test dest=/tmp/link state=link" #删除文件 /tmp/file absent adj. 缺席的 未到的 ansible 192.168.1.100 -m file -a "path=/tmp/file state=absent" #检查文件是否真的删除掉了,此时会报错,因为源文件没有了 ansible 192.168.1.100 -m shell -a "ls /tmp/file/data | grep test"