【问题标题】:Not able to use unarchive module to untar file.tar.gz folder also when used shell module facing error当使用 shell 模块面临错误时,也无法使用 unarchive 模块来解压 file.tar.gz 文件夹
【发布时间】:2020-09-22 00:32:03
【问题描述】:

我的带有 shell 模块的剧本

 - name: Unarchive  macports from local machine
      shell: |
        tar -xvf MacPorts-2.6.2.tar.gz
        cd MacPorts-2.6.2
        ./configure 
        make
        make install

错误 [警告]:考虑使用 unarchive 模块而不是运行 'tar'。如果您需要使用命令,因为 unarchive 不够,您可以添加 'warn: false' 到 此命令任务或在 ansible.cfg 中设置 'command_warnings=False' 以消除此消息。 致命:[X.X.X.X]:失败! => {"更改": true, "cmd": "tar -xvf MacPorts-2.6.2.tar.gz\ncd MacPorts-2.6.2\n./configure\nmake \nmake install\n", "delta" :“0:00:00.026259”,“结束”:“2020-06-03 15:54:26.259407”,“味精”:“非零返回码”,“rc”:2,“开始”:“2020 -06-03 15:54:26.233148", "stderr": "tar: 打开存档出错: 无法打开 'MacPorts-2.6.2.tar.gz'\n/bin/sh: 第 1 行: cd: MacPorts- 2.6.2: 没有这样的文件或目录\n/bin/sh: 第 2 行: ./configure: 没有这样的文件或目录\nmake: * 没有指定目标,也没有找到 makefile。停止。\nmake: * 没有规则将目标设为install'. Stop.", "stderr_lines": ["tar: Error opening archive: Failed to open 'MacPorts-2.6.2.tar.gz'", "/bin/sh: line 1: cd: MacPorts-2.6.2: No such file or directory", "/bin/sh: line 2: ./configure: No such file or directory", "make: *** No targets specified and no makefile found. Stop.", "make: *** No rule to make targetinstall'。停止。"], "stdout": "", "stdout_lines": []}

但我在目标机器上有 tar.gz 文件,当我使用 unarchive 模块解压时面临以下问题

任务 [从本地计算机取消归档 macport] *************************************** ****************************************************** ************************************ 致命:[X.X.X.]:失败! => {"changed": false, "msg": "Failed to find handler for \"/Users/pru5/Documents/ansible/MacPorts-2.6.2.tar.gz\"。确保提取所需的命令文件已安装。命令 \"/usr/bin/tar\" 检测为 tar 类型 bsd。需要 GNU tar。命令 \"/usr/bin/unzip\" 无法处理存档。"} 有人可以帮我在 mac 中解压文件吗?

【问题讨论】:

    标签: linux macos shell ansible ansible-module


    【解决方案1】:

    第一点是在 Ansible playbooks 中使用完整路径。 我建议分成两部分,首先使用 Ansible 本机模块 unarchive 解压文件,第二部分将使用 commandshell 模块进行配置和安装

    - name: Extract TAR
      unarchive:
        src: /Users/pru5/Documents/ansible/MacPorts-2.6.2.tar.gz
        dest: /tmp/MacPorts
    - name: Install software
      command: cd /tmp/MacPorts && ./configure && make && make install
    

    【讨论】:

    • 我尝试过这种方式,但遇到以下错误。 ``` 任务 [提取 TAR] ****************************************** ****************************************************** ************** 致命:[XXXX]:失败! => {"changed": false, "msg": "Failed to find handler for \"/Users/pru5/Documents/ansible/MacPorts-2.6.2.tar.gz\"。确保提取所需的命令文件已安装。命令 \"/usr/bin/tar\" 检测为 tar 类型 bsd。需要 GNU tar。命令 \"/usr/bin/unzip\" 无法处理存档。"}
    • 它接缝你需要 gnu tar ,由于苹果原生 tar 包是 BSD tar ,所以安装 gnu tar 并重试。 brew install gnu-tar
    • 我在mac中安装了gnu-tar,当我运行playbook时,现在面临以下错误“”任务执行期间发生异常。要查看完整的回溯,请使用 -vvv。错误是:AttributeError:“list”对象没有属性“startswith”致命:[X.X.X.X]:失败! => {"msg": "模块执行期间意外失败。", "stdout": ""} "" @Shan Sunny
    【解决方案2】:

    我安装了 jnu-tar,但不确定是否有帮助。解压工作,别无选择地选择了 shell

    name: extract tar
    shell: |
      cd <file_path>
      tar -xvf <file_path/file_name>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多