两台虚拟机
A 主机名为ansible
B 主机名为web
当A执行ansible web -m shell -a ‘echo ${HOSTNAME}’ 时 结果为ansible,当执行ansible web -m shell -a "echo ${HOSTNAME}"结果却为ansible只是换了个引号结果却不相同。
这是因为ansible的工作过程如下
书写命令:
解析命令:[bash 解析]在本机解析完,传输命令
传输命令:传输到客户端
解析命令: 在客户端解析命令
执行命令:客户端执行
输出结果
在执行双引号的时候A主机已经把HOSTNAME这个变量解析成了自己的主机名,再去B主机输出的自然是A的主机名。
而当变成单引号的时候,A主机解析的还是 ${HOSTNAME}到了B主机解析的时候,自然就输出了B主机的主机名。