我对Ansible世界是陌生的,任何人都可以帮助我了解Ansible中Shell和Command之间的区别。何时使用shell以及何时使用命令。我知道一个用例
命令模块更安全,因为它不受用户环境的影响。
答案 0 :(得分:1)
Ansible Shell模块允许您在远程主机上运行任意命令,就像您登录到Shell一样。 Shell和Command模块非常相似,主要区别在于shell模块不会转义命令,从而允许您使用shell运算符,例如重定向(“大于”,“小于”),管道(“ |”)和布尔值运算符(“ &&”,“ ||”)。这确实意味着Shell模块容易受到命令注入/ shell注入的影响,但是在Shell模块中使用变量时,通过使用“ quote”过滤器可以轻松克服这一问题。
参考: Ansible Shell Module Tutorial - Complete Beginner's Guide
答案 1 :(得分:-1)
根据文档:
shell – Execute shell commands on targets
几乎与命令模块完全一样,但是通过远程节点上的外壳程序(/ bin / sh)运行命令。
和:
command – Execute commands on targets
将不会通过外壳程序处理命令,因此$ HOME之类的变量以及“ <”,“>,” |“,”;“之类的操作和“&”将不起作用。如果需要这些功能,请使用外壳模块。
[已编辑以删除不雅语言]