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如何添加到系统环境变量的主要内容,如果未能解决你的问题,请参考以下文章