Ansible查找不适用于环境变量。
这有效:
- name: WIN_SHELL | Get ComputerName
win_shell: $Env:ComputerName
register: computerName
- debug:
var: computerName.stdout_lines.0
这些都不是:
- debug:
msg: '{{lookup("env", "ComputerName")}}'
- debug:
msg: '{{ lookup("env", "COMPUTERNAME") }}'
- debug:
msg: '{{ lookup("env", "computername") }}'
- debug:
msg: '{{ lookup("env", "computerName") }}'
关于ansible查找,我是否不了解?还是有某种令人沮丧的情况阻止了这种情况的发生?我宁愿使用ansible查找,也不愿使用win_shell来保持幂等性。
答案 0 :(得分:1)
env
和其他所有lookups一样在控制器计算机上执行。在这种情况下,这在documentation page for the env
lookup
允许您在调用Ansible时查询控制器上可用的环境变量 。
因此,示例中的win_shell
任务-在远程计算机上执行-绝对不等同于在控制器上执行的查找测试。
如果您没有在主机上禁用事实收集(即通过在剧本中设置gather_facts: false
),则所有环境变量都应在ansible_env
哈希图中可访问。以下任务应使您能够阅读所有内容,并确保正确设置了它们(以及使用它的正确名称)。
- name: Debug all env vars
debug:
var: ansible_env