ansible教程:ansible的shell模块
ansible的shell模块简介
shell模块可以帮助我们在远程主机上执行命令,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。
初步来看,shell 和 command 模块能做很多同样的事情, 以下是两个模块之前的区别:
- command 模块命令将不会使用 shell 执行. 因此, 像 $HOME 这样的变量是不可用的。还有像<, >, |, ;, &都将不可用。
- shell 模块通过shell程序执行, 默认是/bin/sh, <, >, |, ;, & 可用。但这样有潜在的 shell 注入风险.
- command 模块更安全,因为他不受用户环境的影响。 也很大的避免了潜在的 shell 注入风险。shell注入就是参数中有
rm
等危险命令。
ansible 的shell模块参数说明
chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。
[root@ecs-3f37-0003 ~]# ansible all -m shell -a "chdir=/root ls" 192.168.1.39 | CHANGED | rc=0 >> aaa c.log datax datax.tar.gz debug1.yaml