📜  Ansible Unarchive

📅  最后修改于: 2020-12-26 12:40:25             🧑  作者: Mango

Ansible取消存档

Ansible取消归档模块用于从诸如zip,tar,tar.gz之类的归档文件中解压缩文件。在解压缩文件之前,可以选择将文件复制到远程服务器。

取消存档模块使用基本的unzip和tar -xvf命令行工具进行操作。因此,目标服务器必须已经安装了这些命令。由于大多数* nix发行版都是内置的,因此这些工具都是内置的。以下是Ansible取消归档的一些基本要点,例如:

  • 它需要目标远程主机上的zipinfo和gtar / unzip命令。
  • 您可以使用解压缩来处理.zip文件,而使用gtar可以处理.tar,.tar.gz,.tar.bz2,.tar.xz文件。
  • 它不处理不包含.tar存档的.gz,.bz2,.xz文件。
  • 它使用gtar –diff arg来计算是否更改。如果不支持–diff arg,它将始终解压缩归档文件。
  • 默认情况下,它将在解压缩之前将源文件从本地系统复制到目标。
  • 设置remote_src = yes可以解压缩目标上已经存在的存档。
  • 如果需要校验和验证,请改用get_url或Uri来获取文件并设置remote_src = yes
  • win_unzip模块用于Windows目标。
  • 我们无法触摸目标文件中未存在的目标文件或目录。
  • 目标中不在归档文件中的现有文件或目录将被忽略,以决定是否应解压缩归档文件。

为什么要使用非归档模块

Ansible Unarchive模块对于在主机上移动大型文件和文件夹很有用。

例如,如果您有一堆NGINX配置文件,则可以使用unarchive命令从URL下载压缩文件夹并将其解压缩。

例子

1.如以下代码所示,将foo.tgz解压缩到/ var / lib / foo中,例如:

- name: Extract foo.tgz into /var/lib/foo
  unarchive:
    src: foo.tgz
    dest: /var/lib/foo

2.要取消存档远程计算机上已经存在的文件:

- name: Unarchive a file that is already on the remote machine
  unarchive:
    src: /tmp/foo.zip
    dest: /usr/local/bin
    remote_src: yes

3.要取消存档需要下载的文件:

- name: Unarchive a file that needs to be downloaded 
  unarchive:
    src: https://example.com/example.zip
    dest: /usr/local/bin
    remote_src: yes

4.使用其他选项取消存档文件

- name: Unarchive a file with extra options
  unarchive:
    src: /tmp/foo.zip
    dest: /usr/local/bin
    extra_opts:
    - --transform
    - s/^xxx/yyy/