ansible中shell和命令的区别

ansible中shell和命令的区别,ansible,Ansible,我是ansible世界的新手,谁能帮助我理解ansible中shell和command的区别呢。何时使用shell以及何时使用命令。我知道一个用例 命令模块更安全,因为它不受用户环境的影响。根据文档: 它几乎与命令模块完全相同,但通过远程节点上的shell(/bin/sh)运行命令 以及: 命令将不会通过shell进行处理,因此$HOME等变量以及诸如“”、“;”和“&”等操作将不起作用。如果需要这些功能,请使用shell模块 Ansible外壳模块允许您在远程主机上运行任意命令,就像您登录

我是ansible世界的新手,谁能帮助我理解ansible中shell和command的区别呢。何时使用shell以及何时使用命令。我知道一个用例


命令模块更安全,因为它不受用户环境的影响。

根据文档:

它几乎与命令模块完全相同,但通过远程节点上的shell(/bin/sh)运行命令

以及:

命令将不会通过shell进行处理,因此$HOME等变量以及诸如“”、“;”和“&”等操作将不起作用。如果需要这些功能,请使用shell模块


Ansible外壳模块允许您在远程主机上运行任意命令,就像您登录到外壳一样。Shell和命令模块非常相似,主要区别在于Shell模块不转义命令,允许您使用诸如重定向(“大于”、“小于”)、管道(“|”)和布尔运算符(&&“,“| |”)之类的Shell运算符。这确实意味着Shell模块易受命令注入/Shell注入的影响,但在Shell模块中使用变量时,使用“quote”过滤器很容易克服这一问题

参考:

--此链接将提供有关模块之间差异的信息。如果在某些情况下,我可以同时使用这两个模块。首选哪一种?
命令
为您提供了更高的安全性(或更所谓的隔离)。换句话说,您的命令执行不受用户环境变量的影响。然而,
shell
与在终端上执行命令非常相似