Ansible在Windows目标节点使用win_unzip解压.tar文件问题咨询
Windows环境Ansible解压.tar文件解决方案
报错根因
community.windows.win_unzip仅原生支持.zip格式,非zip格式依赖PSCX模块的扩展解压能力。已安装PSCX仍报错的常见原因如下:- PSCX版本过低,未包含tar格式解析组件
- Ansible执行任务的账户上下文未正常加载PSCX模块(比如模块仅安装在普通用户的PowerShell路径,Ansible用系统账户执行任务)
- PSCX与目标节点的PowerShell版本存在兼容性问题
推荐官方社区模块方案
Ansible Windows社区已经提供了专门的tar格式处理模块 community.windows.win_tar,无需额外安装PSCX、7-Zip等第三方依赖,仅要求目标节点PowerShell版本≥5.1(Windows 10、Windows Server 2016及以上系统默认满足),使用示例如下:
- name: 解压.tar文件到目标目录 community.windows.win_tar: src: C:\Users\some_user\Desktop\fake_package.tar dest: C:\Users\some_user\Desktop\ force: yes
该模块支持普通.tar、.tar.gz、.tar.bz2等常见tar压缩格式,参数规则和win_unzip基本一致,可以直接替换原有任务逻辑。
备选兼容方案
如果目标节点PowerShell版本低于5.1无法使用win_tar,可以采用7-Zip+win_command的方案实现解压,示例如下:
# 提前将7-Zip安装到目标节点默认路径 - name: 调用7-Zip解压tar文件 ansible.windows.win_command: '"C:\Program Files\7-Zip\7z.exe" x C:\Users\some_user\Desktop\fake_package.tar -oC:\Users\some_user\Desktop\ -y'
上述命令中-o后直接拼接目标路径无需空格,-y参数会自动确认所有覆盖提示。
内容的提问来源于stack exchange,提问作者farp332
相关产品推荐
相关产品推荐

