Ansible模块[02]:unarchive

1、应用

  • 将本地主机上的存档文件,发送到远程主机指定的目录下解存档。
  • 直接解压目标主机上的存档文件。

2、参数

  • copy:

    • 如果参数copy=yes,则把本地的存档文件拷贝到目标主机。
    • 如果参数copy=no,则在目标主机上查找存档文件。
  • creates:在目标主机上创建文件或目录,如果指定的绝对路径(文件或目录)已存在,则将不运行此步骤。

  • src:

    • 如果copy=yes,是指定本地主机存档文件的源路径。
    • 如果copy=no,则是指定远端主机存档文件的源路径。
  • dest:远程主机上的一个路径,即存档文件解压的绝对路径。

  • owner:解压后文件或目录的属主。

  • group:解压后的目录或文件的属组。

  • mode:解压后文件的权限。

  • creates:指定一个文件名,当该文件存在时,则解压指令不执行。

  • keep_newer:不要替换比存档文件更新的现有文件。[Default: False];type: bool。

  • list_files:如果设置为True,则返回tarball中包含的文件列表。[Default: False];type: bool。

  • remote_src:

    • 默认为“no”,表示:

      • 要将本地主机的存档文件,复制到目标主机的存档文件的本地路径下。
    • 设置为“yes”,表示:

      • 存档文件已在远程主机上,而存档文件不存在于本地主机。

      • 目标主机上要解压缩的现有存档文件的路径。

3、示例

1、将本地主机上的foo.tgz提取到目标主机的/var/lib/foo中,copy=yes,remote_src=no 是默认选项。

- 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 (added in 2.0)
  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/

5、设置解存档后文件的属主、属组、和权限

- name: Modify the properties of the extracted file
  unarchive:
    src: unarchive.tar.gz
    dest: /usr/local/bin
    owner: root
    group: root
    mode: 0755
posted @ 2021-03-17 23:24  lizhi_box  阅读(930)  评论(0)    收藏  举报