我使用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"
我将等待您的答复
答案 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