Ansible Unarchive
Ansible Unarchive
Ansible unarchive 模块用于从诸如 zip、tar、tar.gz 等存档文件中解压或解压文件。它可以选择在解压缩文件之前将文件复制到远程服务器。
解压缩模块使用基本的解压缩和 tar-xvf 命令行工具进行操作。所以目标服务器一定已经安装了这些命令。由于大多数 *nix 发行版都内置了这些工具。以下是 Ansible unarchive 的一些要点,例如:
它需要目标远程主机上的 zipinfo 和 gtar/unzip 命令。
您可以使用 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 目标。
我们无法触及目标中不在存档中的现有文件或目录。
目标中不在存档中的现有文件或目录将被忽略,以决定是否应解压缩存档。
为什么使用 Unarchive 模块
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/