Ansible Unarchive命令导致错误“无法找到处理程序”

时间:2019-11-10 20:57:30

标签: ansible

我使用Ansible在EC2上运行AmazonLinux2。
但是,当执行Unarchive命令时,将显示以下错误。

"Failed to find handler for \"/tmp/hoge.db.gz\".   
Make sure the required command to extract the file is installed.  
Command \"/usr/bin/unzip\" could not handle archive. Command \"/usr/bin/gtar\" could not handle archive."

PlayBook的内容如下。

- name: Unarchive hoge
  become: yes
  unarchive:
    src: /tmp/hoge.db.gz
    dest: /root/fuga/
    remote_src: yes

下面是我检查过的信息,以确定错误原因。

  • 取消存档需要命令
[root@ip- ~]# which gtar
/usr/bin/gtar
[root@ip- ~]# which unzip
/usr/bin/unzip
[root@ip- ~]# which zipinfo
/usr/bin/zipinfo
  • 路径
- debug:
    var: ansible_env.PATH
"ansible_env.PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

我将等待您的答复

1 个答案:

答案 0 :(得分:1)

unarchive模块无法处理gzip文件,除非它们是压缩的tar球(请参见https://docs.ansible.com/ansible/latest/modules/unarchive_module.html)。

您将需要使用copy模块首先复制gzip文件,然后使用shell模块使用gunzip解压缩。

示例:

- copy:
    src: /tmp/hoge.db.gz
    dest: /root/fuga/hoge.db.gz
- shell: gunzip /root/fuga/hoge.db.gz

您可能需要先在托管主机上安装gunzip