windows 为什么Ansible找不到系统路径中的可执行文件?

vom3gejh  于 12个月前  发布在  Windows
关注(0)|答案(2)|浏览(134)

Ansible v2.11目标:Windows 2012服务器
我正在尝试使用C:\Program Files\7-zip\7z.exe实用程序解压缩一个文件,该文件夹位于系统路径中。我不能使用win_unzip,因为文件名太长。不管我怎么得到这个?

- name: "Unzip exa-web {{ exa_web_zip }}"
  win_command:
    7z x {{ remote_dir }}/{{ exa_web_zip }} -o{{ exa_web_dir }}

TASK [exa-web : Unzip exa-web exa-web-development-b7cf4eee3c-20210930_1700-win64.zip] ***
fatal: [172.16.100.31]: FAILED! => {"changed": false, "cmd": "7z x C:\\temp/exa-web-development-b7cf4eee3c-20210930_1700-win64.zip -oC:\\Viztek\\EXA\\web", "msg": "Exception calling \"SearchPath\" with \"1\" argument(s): \"Could not find file '7z.exe'.\"", "rc": 2}

我甚至添加了这个任务,只是为了确保是在系统路径,无济于事。

- name: Add to system path
  win_path:
    elements:
      - "C:\\Program Filse\\7-zip"

我错过了什么?

xfb7svmp

xfb7svmp1#

有一个常用的参数,叫做chdir。然后ansible应该找到可执行文件:

- name: "Unzip exa-web {{ exa_web_zip }}"
  win_command:
    7z x {{ remote_dir }}/{{ exa_web_zip }} -o{{ exa_web_dir }}
  args:
    chdir: 'C:\Program Filse\7-zip'
f45qwnt8

f45qwnt82#

您可以将环境变量保存在.profile中,然后使用

ansible all -m shell -a '. /etc/profile;<command>' -b

<command>替换成你想做的任何事情。

相关问题