要解决Ansible的shell模块与Linux的shell表现不同的问题,可以使用Ansible的raw模块来替代shell模块。raw模块可以直接在目标主机上执行原始命令,而不需要通过远程执行模块来执行命令。
下面是一个使用Ansible的raw模块来执行命令的示例:
- name: 使用raw模块执行命令
hosts: your_host
tasks:
- name: 在目标主机上执行命令
raw: your_command
register: result
- name: 显示命令输出
debug:
var: result.stdout
在上面的示例中,你需要将"your_host"替换为要执行命令的目标主机。"your_command"是要执行的原始命令。使用raw模块时,命令会在目标主机上直接执行,就像在本地shell中一样。
执行结果将被存储在"result"变量中,并通过debug模块显示输出。
通过使用raw模块,你可以更好地控制命令的执行方式,以更好地满足你的需求。