ansible 常用模块 archive

发布时间 2023-03-31 14:47:53作者: 小吉猫

模块说明

  • unarchive模块解压缩存档。它不会解压缩不包含存档的压缩文件。

  • 默认情况下,它会在解包之前将源文件从本地系统复制到目标。

  • 设置remote_src=yes为解压缩目标上已存在的存档。

  • 在目标主机上需要zipinfogtar/unzip命令。

  • 需要目标主机上的zstd命令来展开.tar.zst文件。

  • 可以使用 处理.zip文件unzip以及使用.tar.tar.gz.tar.bz2.tar.xz.tar.zst文件gtar

  • 不处理不包含.tar存档的.gz文件、.bz2文件、.xz.zst文件

  • 目标中不在存档中的现有文件/目录不会被触及。这与正常的存档提取行为相同。

  • 目标中不在存档中的现有文件/目录将被忽略,以决定是否应解压缩存档。

参数说明

Parameter

Comments

attributes

 

aliases: attr

string

added in Ansible 2.3

生成的文件系统对象应具有的属性。

要获得支持的标志,请查看目标系统上chattr的手册页。

该字符串应包含与lsattr显示的顺序相同的属性。

=运算符被假定为默认值,否则+or-运算符需要包含在字符串中。

copy

 

boolean

如果为真,则文件从本地控制器复制到托管(远程)节点,否则,插件将在托管机器上查找 src 存档。

此选项已被弃用,取而代之的是remote_src.

此选项与 互斥remote_src

选择:

  • false

  • true ← (default)

creates

 

path

added in Ansible 1.6

如果指定的绝对路径(文件或目录)已经存在,则不会运行此步骤。

指定的绝对路径(文件或目录)必须在 . 给出的基本路径之下dest:

decrypt

boolean

added in Ansible 2.4

此选项控制使用保管库对源文件的自动解密。

选择:

  • false

  • true ← (default)

dest

path / required

存档应解压缩的远程绝对路径。

给定的路径必须存在。基本目录不是由此模块创建的。

exclude

 

list / elements=string

added in Ansible 2.1

列出您希望从取消存档操作中排除的目录和文件条目。

include 互斥

Default: []

extra_opts

 

list / elements=string

added in Ansible 2.1

通过传入数组指定其他选项。

每个以空格分隔的命令行选项应该是数组的一个新元素。请参阅示例。

具有多个元素的命令行选项必须在数组中使用多行,每个元素一行。

Default: [""]

group

string

应该拥有文件系统对象的组的名称,将被提供给chown

如果未指定,它将使用当前用户的当前组,除非您是 root,在这种情况下,它可以保留以前的所有权。

include

 

list / elements=string

added in ansible-core 2.11

您要从存档中提取的目录和文件条目的列表。如果include不为空,则仅提取此处列出的文件。

exclude互斥

Default: []

io_buffer_size

integer

added in ansible-core 2.12

用于从存档中提取文件的易失性内存缓冲区的大小(以字节为单位)。

Default: 65536

keep_newer

 

boolean

added in Ansible 2.1

不要替换比存档文件更新的现有文件。

选择:

  • false ← (default)

  • true

list_files

boolean

added in Ansible 2.0

如果设置为 True,则返回压缩包中包含的文件列表。

选择:

  • false ← (default)

  • true

mode

 

any

生成的文件系统对象应具有的权限。

对于习惯于/usr/bin/chmod的用户,请记住模式实际上是八进制数。您必须添加一个前导零,以便 Ansible 的 YAML 解析器知道它是一个八进制数(如0644or 01777)或引用它(如'644'or '1777')以便 Ansible 接收一个字符串并可以自己将字符串从字符串转换为数字。

在不遵循这些规则之一的情况下为 Ansible 提供一个数字将以十进制数结尾,这将产生意想不到的结果。

从 Ansible 1.8 开始,模式可以指定为符号模式(例如,u+rwxu=rw,g=r,o=r)。

如果mode未指定且目标文件系统对象umask存在,则在为新创建的文件系统对象设置模式时将使用系统上的默认值。

如果mode未指定且目标文件系统对象确实存在,则将使用现有文件系统对象的模式。

owner

 

string

应该拥有文件系统对象的用户的名称,将被提供给chown

如果未指定,它将使用当前用户,除非您是 root,在这种情况下,它可以保留以前的所有权。

指定数字用户名将被假定为用户 ID 而不是用户名。避免使用数字用户名以避免这种混淆。

remote_src

 

boolean

added in Ansible 2.2

设置true为表示归档文件已经在远程系统上,而不是 Ansible 控制器的本地。

此选项与 copy互斥

选择:

  • false ← (default)

  • true

selevel

string

SELinux 文件系统对象上下文的级别部分。

这是 MLS/MCS 属性,有时称为range.

设置为 时_default,它将使用level策略的一部分(如果可用)。

serole

string

SELinux 文件系统对象上下文的角色部分。

设置为 时_default,它将使用role策略的一部分(如果可用)。

setype

string

SELinux 文件系统对象上下文的类型部分。

设置为 时_default,它将使用type策略的一部分(如果可用)。

seuser

 

string

SELinux 文件系统对象上下文的用户部分。

默认情况下,它会system在适用的情况下使用该策略。

设置为 时_default,它将使用user策略的一部分(如果可用)。

src

path / required

如果remote_src=no(默认),存档文件的本地路径复制到目标服务器;可以是绝对的或相对的。如果是remote_src=yes,目标服务器上要解压的现有存档文件的路径。

如果remote_src=yes并且src包含://,远程机器将首先从 URL 下载文件。(添加版本 2.0)。

unsafe_writes

 

boolean

added in Ansible 2.2

影响何时使用原子操作来防止数据损坏或从目标文件系统对象读取不一致。

默认情况下,此模块使用原子操作来防止数据损坏或从目标文件系统对象读取不一致,但有时系统会以防止这种情况的方式配置或破坏。一个例子是 docker 挂载的文件系统对象,它不能从容器内部自动更新,只能以不安全的方式写入。

此选项允许 Ansible 在原子操作失败时回退到更新文件系统对象的不安全方法(但是,它不会强制 Ansible 执行不安全的写入)。

重要的!不安全的写入受竞争条件的影响,并可能导致数据损坏。

选择:

  • false ← (default)

  • true

validate_certs

 

boolean

added in Ansible 2.2

这仅适用于使用 https URL 作为文件源的情况。

这应该只设置为false在使用自签名证书的个人控制站点上使用。

在 2.2 之前,代码的工作方式就好像它被设置为true.

选择:

  • false

  • true ← (default)

示例

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

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

- name: Unarchive a file that needs to be downloaded (added in 2.0)
  ansible.builtin.unarchive:
    src: https://example.com/example.zip
    dest: /usr/local/bin
    remote_src: yes

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

参考文档

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/unarchive_module.html#ansible-collections-ansible-builtin-unarchive-module