Ansible Windows如何添加到系统环境变量

Posted

技术标签:

【中文标题】Ansible Windows如何添加到系统环境变量【英文标题】:Ansible Windows how to prepend to system environment variable 【发布时间】:2020-06-12 05:09:50 【问题描述】:

我正在尝试配置 Ansible 以将 Python 包 cryptography 安装到 Windows 10 上。 这需要预先添加两个环境变量:

C:\> set LIB=C:\OpenSSL-win64\lib;%LIB%
C:\> set INCLUDE=C:\OpenSSL-win64\include;%INCLUDE%

cryptography docs on this

我想使用 Ansible 的 win_environment 预先添加到环境变量。

但是,我不知道如何通过win_environment 将其添加到环境变量中。你能帮帮我吗?


我的尝试

我尝试了以下任务:

- name: Set OpenSSL environment variables - LIB
  win_environment:
    name: LIB
    level: machine
    state: present
    value: C:\Program Files\OpenSSL-Win64\lib;%LIB%

不幸的是,Ansible 试图将 %LIB% 解释为路径,并吐出:Invalid search path '%LIB%' specified in 'LIB environment variable' -- 'The system cannot find the path specified.


研究

how to extend windows path variable using ansible

这里的 OP 也有同样的问题,除了 Path 变量。这是我的cmets:

我的用例不是Path 环境变量。 当前的答案基本上是使用raw 和/或register 在几个步骤中手动添加到路径的前面。我希望有更简单的东西。

版本

ansible==2.8.3
cryptography==2.6.1

【问题讨论】:

您是否尝试使用environment 任务参数? docs.ansible.com/ansible/latest/user_guide/…。这应该添加到您的 pip taks(或您用来安装 python dep 的任何 ansible 模块)中。 我不知道参数environment,谢谢@Zeitounator!在这种情况下,这解决了我的问题。但是,我仍然对上述问题感兴趣,因为我认为添加到环境变量之前很有用。 【参考方案1】:

正如@Zeitounator 在 OP 上的 cmets 中指出的那样,可以在cryptography 安装案例中使用environment 任务参数作为一种解决方法(感谢@Zeitounator 这样做)。

- name: PIP Install Requirements
  win_shell: .\venv\Scripts\pip3.8 install -r requirements.txt
  args:
    chdir: c:\directory
  environment:
    LIB: C:\Program Files\OpenSSL-Win64\lib
    INCLUDE: C:\Program Files\OpenSSL-Win64\include

我在这里发布这个答案是因为我认为environment 任务参数是一个有用的工具。

但是,它代表了原始问题的解决方法。由于我认为这个问题很有用,所以我仍然对使用 Ansible 预先添加到 Windows 环境变量的更好方法感兴趣。

【讨论】:

您应该使用pip module 而不是触发shell。 文档没有指定 windows 目标不受支持,所以它应该。但是你为什么不试试呢?

以上是关于Ansible Windows如何添加到系统环境变量的主要内容,如果未能解决你的问题,请参考以下文章

电脑JAVA环境变量如何设置

windows配置Java环境变量

如何在Windows10下配置anaconda环境变量?

windows10如何设置环境变量

win xp如何配置jdk-7u10-windows-i586.exe环境,麻烦写一下具体的变量值,感谢!

Windows 10操作系统配置JDK 1.15的环境变量