====== 通过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 {} . \;