我编写了一本剧本,它下载tar文件,并在运行剧本时将其解压缩到Mac.But中的某个目录,但在运行失败时出现以下错误
"msg":“未能找到\"/Users/harmeet/.ansible/tmp/ansible-tmp-1549339698.75-251687957122076/config.tar9IXAUQ.gz\".的处理程序,请确保安装了解压缩文件所需的命令。命令\"/usr/bin/ tar \”检测为tar类型bsd。GNU需要。命令\"/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 )上使用zip,则此任务可以工作,但对于tar文件则失败。
在查看gtar之后,我还在.bash_src中安装了gnu tar,如this question &更新的路径。
发布于 2019-02-19 07:11:27
实际上,在macOS上,它查找的是基于GNU的tar存档模块,这在mac上是找不到的。因此,如果您在ansible中为mac使用zip模块,它将工作,但为此,我们可能需要更改剧本文件&它可能会产生问题,因为我在mac和linux中都使用单一的剧本。我使用基于GNU的tar存档模块来解决这个问题。
我用以下步骤解决了这个问题
brew install gnu-tar.bashsrc文件中设置gtar的路径,否则它将无法使用gtar进行解压缩。通常.bashsrc存在于$HOME路径上。如果不存在,那么创建它。出口PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH“MANPATH="/usr/local/opt/gnu-tar/libexec/gnuman:$MANPATH”
谢谢
发布于 2021-04-21 09:25:00
如果您的默认外壳是zsh,那么您应该将以下内容放在~/.zshenv中
export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"您可以通过以下方法检查它是否正常工作:
ansible the-hostname -m command -a "which tar"https://stackoverflow.com/questions/54528115
复制相似问题