当使用Ansible的Shell模块时,有时候会出现失败的情况,而直接在目标主机上执行相同的命令却成功。这可能是由于一些环境变量或者其他因素导致的。
一种解决方法是使用原始模块替代Shell模块。原始模块允许您直接在目标主机上执行命令,而不是通过SSH连接。
以下是一个示例,演示如何使用原始模块来执行命令:
- name: 使用原始模块执行命令
hosts: your_host
tasks:
- name: 使用原始模块执行命令
raw: command_to_execute
register: result
- debug:
var: result.stdout
在上面的示例中,您需要将"your_host"替换为目标主机的名称或组名。"command_to_execute"应替换为要在目标主机上执行的命令。
在执行完命令后,您可以使用"result.stdout"来获取命令的输出。
请注意,原始模块不会像Shell模块一样解析变量。如果您需要在命令中使用变量,可以使用"ansible_facts"变量来获取主机的事实。
希望这个解决方法能够帮助您解决Ansible中Shell模块失败但原始模块可用的问题。
下一篇:Ansible转换任务