ansible 查找不适用于环境变量



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

env所有其他查找都在控制器计算机上执行。在这种情况下,这在env查找的文档页面上的概要中得到了很好的回忆

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

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

如果您没有在主机上禁用事实收集(即通过在 playbook 中设置gather_facts: false(,则所有环境变量都应该可以在ansible_env字典中访问。以下任务应使您能够阅读所有这些任务,并确保正确设置了您的任务(以及获取其正确的名称以使用它(。

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

最新更新