Ansible unarchive模块在BusyBox嵌入式系统中无法正常工作
解决BusyBox嵌入式系统中Ansible unzip模块报错问题
不需要安装GNU tar,问题出在Ansible的unarchive模块对zip文件的检测逻辑上:
Ansible默认会用unzip -Z或zipinfo工具识别zip归档,但BusyBox自带的精简版unzip不支持-Z参数,也没有单独的zipinfo二进制,导致模块检测失败,但实际直接执行unzip命令是可以正常解压的。
两种可行解决方案:
方案1:改用command模块直接调用unzip命令
绕过unarchive模块的检测逻辑,直接使用已验证有效的命令:
- name: Unarchive media files command: unzip /home/root/archive.zip -d /home/root/ args: chdir: /home/root/ creates: /home/root/your_extracted_file_or_dir # 替换为解压后存在的文件/目录,避免重复执行
方案2:给unarchive模块指定兼容BusyBox的unzip_command
覆盖模块默认的unzip调用命令,跳过检测环节:
- name: Unarchive media files unarchive: src: /home/root/archive.zip dest: /home/root/ remote_src: yes unzip_command: "unzip %s -d %s"
这样就能让Ansible使用BusyBox的unzip完成解压,无需额外安装GNU工具。
内容的提问来源于stack exchange,提问作者rocky_alpine
相关产品推荐
相关产品推荐

