无法通过macOS中的ansarchive归档模块提取tar文件?

时间:2019-02-05 05:23:55

标签: macos ansible zip tar

我写了一部剧本,下载了tar文件并将其解压缩到Mac中的某个目录中。但是当我运行剧本时,它失败并显示以下错误

  

“ msg”:“无法找到\” / Users / harmeet / .ansible / tmp / ansible-tmp-1549339698.75-251687957122076 / config.tar9IXAUQ.gz \的处理程序。“确保所需的命令来提取文件已安装。命令\“ / usr / bin / tar \”被检测为tar类型bsd。需要GNU tar。命令\“ / usr / bin / unzip \”无法处理存档。

剧本代码

-name: Download the tar for sample config 
unarchive:
 src: http://someremoteurl/config.tar.gz 
dest: /Users/{{ansible_user}}/.myfolder/ 
remote_src: yes 
creates: /Users/{{ansible_user}}/.myfolder/config

如果在远程服务器上使用压缩文件,例如http://someremoteurl/config.zip,则此任务有效,但对于tar文件,它将失败。

在查看this question

之后,我还安装了gtar之类的gnu tar和.bash_src中的更新路径。

2 个答案:

答案 0 :(得分:0)

实际上,在macOS上,它会寻找在Mac上找不到的基于GNU的tar存档模块。因此,如果您在ansible中为Mac使用zip模块,它将起作用,但为此,我们可能需要更改剧本文件,并且它可能会产生问题,因为我在Mac和linux上都使用单个剧本。我使用基于GNU的tar存档模块来解决此问题。

我通过以下步骤解决了这个问题

  1. 通过自制软件安装gtar。 brew install gnu-tar
  2. .bashsrc文件中设置gtar的路径,否则它将无法使用gtar进行归档。通常.bashsrc存在于$HOME路径中。如果不存在,请创建它。
  

export PATH =“ / usr / local / opt / gnu-tar / libexec / gnubin:$ PATH”       export MANPATH =“ / usr / local / opt / gnu-tar / libexec / gnuman:$ MANPATH”

谢谢

答案 1 :(得分:0)

如果您的默认 shell 是 zsh,那么您应该将以下内容放入 ~/.zshenv

export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"

您可以通过以下方式检查它是否正常工作:

ansible the-hostname -m command -a "which tar"