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