Ansible Unarchive

2024 年 8 月 29 日 | 阅读 2 分钟

Ansible unarchive 模块用于从归档文件(如 zip、tar、tar.gz)中解包或解压缩文件。它可以选择在解压缩之前将文件复制到远程服务器。

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

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

为什么要使用 Unarchive 模块

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

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

示例

1. 将 foo.tgz 提取到 /var/lib/foo 中,如下面的代码所示,例如

2. 解压缩已在远程计算机上的文件

3. 解压缩需要下载的文件

4. 解压缩带有额外选项的文件


下一个主题Ansible Pip