如何使用ansible扩展Windows路径变量

Kia*_*far 5 windows path ansible

使用 win_environment,可以向 Windows 主机添加/删除环境变量。但是要修改已经存在的变量,win_environment 似乎没有用,因为您无法读取旧值来修改和更新变量。正确的?

nit*_*one 5

编辑:从 Ansible 2.3 开始,win_path模块为您完成所有繁重的工作。只需给它一个应该出现在路径中的项目列表,它就会确保它们存在并且按照您指定的相对顺序。

(如果您仍在使用 Ansible 的旧版本,则仍然可以使用以下方法)

为了让它正常工作,您需要与替换和搜索过滤器结合使用,以便仅在您想要的值不存在时才进行更改。例如(这是针对 Ansible 1.9 的):

  - raw: echo %PATH%
    register: path_out

  - win_environment: 
      name: path
      value: "{{ path_out.stdout | regex_replace('[\r\n]*', '') + ';C:\\\\newpath' }}"
      state: present
      level: machine
    when: not (path_out.stdout | search("(?i)c:\\\\newpath"))
Run Code Online (Sandbox Code Playgroud)

这比应有的要困难得多——我想为 2.0 破解一个 win_path 模块,以使其更容易......

对于 2.0,raw在 Powershell 下运行,因此您需要Get-Item env:PATH改为。