在工作中,批量执行一些操作很有必要,比如我写了一个脚本,但是这个脚本可以在每一个机器都可以执行。举个例子:我在我的k8s环境中,所有的node节点上因为长时间的更新操作,导致下载的镜像过多,占用过多的空间资源,所以,就写了一个脚本批量删除镜像的脚本,但是这个脚本在我电脑本地,已经测试过了没有问题,下面就需要copy到目标机器上,方便批量执行了。
先看一下我的ansible的配置吧,我根据自己的需求划分后,不通的需求不通的文件里
[root@www.wulaoer.org ~]# cat ops_10_16 [ops_tools] ali-bj-g-ops-web ansible_ssh_user=root ansible_ssh_host=10.16.208.133 ansible_ssh_port=11011
下面我就把本地的脚本推动到目标机器上,这里用到了ansible的copy模块,src是本地的文件路径,dest是目标路径。
[root@www.wulaoer.org ~]# ansible ops_tools -m copy -a "src=/opt/sh/docker_images.sh dest=/home" ali-bj-g-ops-web | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": true, "checksum": "063b694974d74422fc5cac9ed500a29bed52d791", "dest": "/home/docker_images.sh", "gid": 0, "group": "root", "md5sum": "408b443a6debeecdb2e3174208818f95", "mode": "0644", "owner": "root", "size": 287, "src": "/root/.ansible/tmp/ansible-tmp-1615538133.88-25836-263055278069757/source", "state": "file", "uid": 0 }
推送成功,下面进入目标机器验证一下,文件是存在的。
[root@www.wulaoer.org ~]# ll /home/docker_images.sh -rw-r--r-- 1 root root 287 Mar 12 16:35 /home/docker_images.sh
这里需要注意一下,我们推送过去的文件都是系统默认的权限,和原文件型属性不一致。这样在推送脚本时,目标文件是无法执行的。所以,在copy模块里还可以增加五个参数分别是owner,group,mode,backup,force五个参数owner指的是用户。group指的是用户组。mode指的是文件属性。如果给文件加个执行权限可以使用mode=u+x表示。backup参数是指本地和远程目标机器里的文件同名,内容不一样,可以对文件做备份远程机器中的文件,然后在将本地的文件copy过去,可以选择yes或no,备份不备份。这里还有一个扩展内容就是src,srccopy的是文件或者文件夹,content copy的是文件的内容,两者必须有一个,否则报错
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏