我是 Ansible 新手,有人可以帮我理解 Ansible 中 shell
和 command
的区别吗?什么时候使用 shell
,什么时候使用 command
?
我知道 command
模块更安全,因为它不受用户环境的影响。
我是 Ansible 新手,有人可以帮我理解 Ansible 中 shell
和 command
的区别吗?什么时候使用 shell
,什么时候使用 command
?
我知道 command
模块更安全,因为它不受用户环境的影响。
根据文档:
它几乎与命令模块完全相同,但在远程节点上通过 shell (/bin/sh) 运行命令。
和:
命令将不会通过 shell 处理,因此像 $HOME 这样的变量和 "<", ">", "|", ";" 和 "&" 这样的操作将无法使用。如果需要这些功能,请使用 shell 模块。
command
命令提供更多的安全性(或所谓的隔离)。换句话说,你的命令执行不受用户环境变量的影响。而 shell
很类似于在终端上以你自己的身份执行命令。 - SilleBilleshell
模块而不是command
模块的情况。相比于command
模块,shell
模块的执行速度较慢,除非有特殊需要使用shell功能,如环境变量扩展或使用管道链接多个命令,否则应避免使用shell
模块。 - name: copy or mv within remote host
command: cp /path/of/the/file/with/name /path/of/the/destination/directory/
- name: rename within remote host
shell: chdir=/path/ mv file_name new_file_name
命令和Shell可以互换使用。