资源共享,记录个人心得等

ansible复制脚本执行取回结果

通过copy复制脚本到各机器

复制脚本到各机器的tmp目录中,模块-a中无法使用“*”这种通配符,因此如果多文件的话在本地创建新目录放进去再copy传输目录即可。

ansible all -i hosts -m copy -a "src=/tmp/check.sh dest=/tmp mode=755"

执行命令

sh后面的ip是传入的参数,最后加become是使用root执行,先cd进目录中因为脚本中调用其他脚本,如果目录不对直接运行会找不到其他脚本无法继续执行。

ansible 10.110.95.1 -i hosts -m shell -a "cd /tmp && sh check.sh 10.110.95.1" -b -become_method=su

通过fetch取回脚本运行结果文件

脚本结果会生成一个名称为"IP+linux"的动态结果,幸亏是IP,通过变量可取回。

"{{ inventory_hostname }}"变量是以hosts配置文件中对应主机的ip为结果值。变量加载dest中也是可以的,这样会在取回的本机对应目录中新建对应ip文件夹单独存放每台设备的结果文件。

ansible all -i hosts -m fetch -a "src=/tmp/{{ inventory_hostname }}_linux_chk.xml dest=/tmp/chk" -b -become_method=su

整理结果文件

取回的文件在 /tmp/对应ip/tmp/ 之中如果单独想把结果拷贝出来可以吧他们放一起。

find /tmp/chk/ -name "*.xml" -exec mv {} . \;
find /tmp/chk/ -type f -exec mv {} . \; 
赞(0)
转载需标明出处Lee's Blog » ansible复制脚本执行取回结果

评论 抢沙发

登录

找回密码

注册