ansible查找不适用于环境变量

时间:2019-07-25 17:08:01

标签: ansible environment-variables lookup

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来保持幂等性。

1 个答案:

答案 0 :(得分:1)

env和其他所有lookups一样在控制器计算机上执行。在这种情况下,这在documentation page for the env lookup

的Synopsys中已被很好地记住。
  

允许您在调用Ansible时查询控制器上可用的环境变量

因此,示例中的win_shell任务-在远程计算机上执行-绝对不等同于在控制器上执行的查找测试。

如果您没有在主机上禁用事实收集(即通过在剧本中设置gather_facts: false),则所有环境变量都应在ansible_env哈希图中可访问。以下任务应使您能够阅读所有内容,并确保正确设置了它们(以及使用它的正确名称)。

- name: Debug all env vars
  debug:
    var: ansible_env