我写了一部剧本,下载了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文件,它将失败。
之后,我还安装了gtar
之类的gnu tar和.bash_src
中的更新路径。
答案 0 :(得分:0)
实际上,在macOS上,它会寻找在Mac上找不到的基于GNU的tar存档模块。因此,如果您在ansible中为Mac使用zip模块,它将起作用,但为此,我们可能需要更改剧本文件,并且它可能会产生问题,因为我在Mac和linux上都使用单个剧本。我使用基于GNU的tar存档模块来解决此问题。
我通过以下步骤解决了这个问题
brew install gnu-tar
.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"