作用:在远程机器上执行命名(复杂的命令)
shell模块支持的参数和解释(部分)
chdir 在执行命令之前,通过cd进入该参数指定的目录
creates 定义一个文件是否存在,如果存在则不执行该命令;如果不存在该文件,则执行shell命令
free_form 参数信息中可以输入任何的系统指令,实现远程管理
removes 定义
一个文件是否存在,如果存在该文件,则执行命令;如果不存在,则跳过
shell模块案例
批量在客户端机器,创建写入文件信息
[root@m01 ~]# ansible change -m shell -a "echo 你真棒>/tmp/heihei.txt"
192.168.200.5 | CHANGED | rc=0 >>
192.168.200.6 | CHANGED | rc=0 >>
在另外俩个主机上查询,存在该文件
[root@rsnc01 ~]# ls /tmp |grep heihei.txt
heihei.txt
[root@nfs01 ~]# ls /tmp |grep heihei.txt
heihei.txt
批量查询进程信息
#现在俩个被管理的主机上创建个vi的编辑任务,放在后台运行
[root@rsnc01 ~]# vi 11.sh &
[1] 3305
[root@nfs01 ~]# vi 11.sh &
[1] 3274
在ansible主机上进行查询
[root@m01 ~]# ansible change -m shell -a "ps -ef|grep vi"
192.168.200.5 | CHANGED | rc=0 >>
root 696 1 0 08:16 ? 00:00:00 /usr/bin/VGAuthService -s
root 3305 1809 0 15:33 pts/0 00:00:00 vi 11.sh
root 3413 3412 0 15:38 pts/1 00:00:00 /bin/sh -c ps -ef|grep vi
root 3415 3413 0 15:38 pts/1 00:00:00 grep vi
192.168.200.6 | CHANGED | rc=0 >>
root 692 1 0 08:16 ? 00:00:00 /usr/bin/VGAuthService -s
root 3274 1807 0 15:33 pts/0 00:00:00 vi 11.sh
root 3369 3368 0 15:38 pts/1 00:00:00 /bin/sh -c ps -ef|grep vi
root 3371 3369 0 15:38 pts/1 00:00:00 grep vi
再进一步的筛选查询
[root@m01 ~]# ansible change -m shell -a "ps -ef|grep vi|grep -v vice|grep -v grep"
192.168.200.5 | CHANGED | rc=0 >>
root 3305 1809 0 15:33 pts/0 00:00:00 vi 11.sh
192.168.200.6 | CHANGED | rc=0 >>
root 3274 1807 0 15:33 pts/0 00:00:00 vi 11.sh
#grep -v +参数,反向查找,只打印不匹配的行,相当于筛选掉带参数的行
批量远程执行脚本
该需要执行的脚本,必须要求在客户端机器上存在,否则会报错文件不存在,这是shell模块的特点,是因为还有一个专门执行脚本的script模块
注意:脚本必须在客户端机器上存在才行
1.创建文件夹
2.创建sh脚本文件,还要写入脚本内容
3.赋予脚本可执行权限
4.执行脚本
5.忽略warning信息
[root@m01 ~]# ansible change -m shell -a "mkdir -p /server/myscripts/;echo 'hostname'>/server/myscripts/hostname.sh;chmod +x /server/myscripts/hostname.sh;bash /server/myscripts/hostname.sh warn=False "
192.168.200.6 | CHANGED | rc=0 >>
nfs01
192.168.200.5 | CHANGED | rc=0 >>
rsnc01