使用ansible unarchive会创建未按预期工作的对象

使用ansible unarchive会创建未按预期工作的对象,ansible,Ansible,这是我的任务。它基本上将文件解压缩到dest目录/usr/local/hadoop中 hadoop文件夹不在那里,我得到了这个错误- 错误:- fatal: [default]: FAILED! => {"changed": false, "failed": true, "msg": "dest 'dest=/usr/local/ creates=/usr/local/hadoop copy=no' must be an existing dir"} - name: Unarch

这是我的任务。它基本上将文件解压缩到dest目录/usr/local/hadoop中

hadoop文件夹不在那里,我得到了这个错误-

错误:-

fatal: [default]: FAILED! => {"changed": false, "failed": true, "msg": "dest 'dest=/usr/local/ creates=/usr/local/hadoop copy=no' must be an existing dir"}





- name: Unarchive a file 
  unarchive:
    src: /home/hduser/hadoop-2.7.1.tar.gz
    dest: dest=/usr/local/ creates=/usr/local/hadoop copy=no
    remote_src: yes

您的任务有一些语法问题。您不能将遗留
key=value
语法与YAML语法结合使用。特别是这一行

dest: dest=/usr/local/ creates=/usr/local/hadoop copy=no
…只是将一个很长的字符串传递给
dest
键。你想要:

- name: Unarchive a file 
  unarchive:
    src: /home/hduser/hadoop-2.7.1.tar.gz
    dest: /usr/local/ 
    creates: /usr/local/hadoop
    copy: no
    remote_src: yes

谢谢,成功了。更改后,文件将被提取并复制到文件夹hadoop-2.7.1中,而不是hadoop中。它不应该创建文件夹“hadoop”并将其解压缩。它将简单地取消归档
/home/hduser/hadoop-2.7.1.tar.gz
的内容。如果其中包含一个
hadoop-2.7.1
,那么您将得到它。