ansible.builtin.meta 模块 – 执行 Ansible “操作”

注意

此模块是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,您也可以使用简短的模块名称 meta。但是,我们建议您使用 完整限定集合名称 (FQCN) ansible.builtin.meta,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合发生冲突。

摘要

  • 元任务是一种特殊类型的任务,可以影响 Ansible 的内部执行或状态。

  • 元任务可以在 playbook 中的任何位置使用。

  • 此模块也支持 Windows 目标。

参数

参数

注释

free_form

字符串 / 必需

此模块采用自由格式命令,作为字符串。没有名为“自由格式”的实际选项。请参阅示例!

flush_handlers 使 Ansible 运行迄今为止已通知的任何处理程序任务。Ansible 在某些特定点内部插入这些任务以隐式触发处理程序运行(在预/后任务、最终角色执行以及 playbook 的主要任务部分之后)。

refresh_inventory(在 Ansible 2.0 中添加)强制重新加载清单,在动态清单脚本的情况下,这意味着它们将被重新执行。如果动态清单脚本正在使用缓存,Ansible 无法知道这一点,也没有办法刷新它(您可以禁用缓存,或者如果您的特定清单数据源(例如 aws)可用,则可以使用清单插件而不是清单脚本)。这主要在创建了其他主机并且用户希望使用它们时有用,而不是使用 ansible.builtin.add_host 模块。

noop(在 Ansible 2.0 中添加)这实际上“什么也不做”。它主要用于内部,不建议一般使用。

clear_facts(在 Ansible 2.1 中添加)导致清除 playbook 的主机列表中指定的主机收集的事实,包括事实缓存。

clear_host_errors(在 Ansible 2.1 中添加)清除 playbook 的主机列表中指定的主机的失败状态(如果有)。

end_play(在 Ansible 2.2 中添加)导致 playbook 结束,而不会使主机失败。请注意,这会影响所有主机。

reset_connection(在 Ansible 2.3 中添加)中断持久连接(即 ssh + 控制持久性)

end_host(在 Ansible 2.8 中添加)是 end_play 的每个主机变体。导致 playbook 针对当前主机结束,而不会使其失败。

end_batch(在 Ansible 2.12 中添加)导致当前批次(请参阅 serial)结束,而不会使主机失败。请注意,使用 serial=0 或未定义时,其行为与 end_play 相同。

end_role(在 Ansible 2.18 中添加)导致当前正在执行的角色结束,而不会使主机失败。实际上,在执行 end_role 后,角色中的所有任务都将被忽略。由于处理程序位于全局的 playbook 范围内,因此通过角色添加的所有处理程序都不会受到影响,并且如果收到通知,仍将执行。从角色外部或从处理程序调用 end_role 是错误的。请注意,end_role 对父角色或依赖(通过 meta/main.yml 中的依赖项)于执行 end_role 的角色没有影响。

选择

  • "clear_facts"

  • "clear_host_errors"

  • "end_host"

  • "end_play"

  • "flush_handlers"

  • "noop"

  • "refresh_inventory"

  • "reset_connection"

  • "end_batch"

  • "end_role"

属性

属性

支持

描述

action

支持:

指示此属性具有相应的 action 插件,因此某些选项部分可以在控制器上执行

async

支持:

支持与 async 关键字一起使用

become

支持:

可与 become 关键字一起使用

bypass_host_loop

支持:部分

某些子操作会忽略主机循环,请参阅上面每个特定操作的描述以了解例外情况

强制执行不按主机执行的“全局”任务,这会绕过按主机模板化以及串行、节流和其他循环注意事项

条件将按使用 run_once 的方式工作,使用的变量将来自第一个可用的主机

此操作在非锁步策略之外通常无法正常工作

bypass_task_loop

支持:部分

大多数子操作会忽略任务循环,请参阅上面每个特定操作的描述以了解例外情况

这些任务会忽略 loopwith_ 关键字

check_mode

支持:部分

虽然这些操作不会直接修改目标,但它们确实会更改运行中目标的可能状态

可以在 check_mode 下运行并返回更改状态预测,而无需修改目标,如果不受支持,则操作将被跳过。

connection

支持:部分

此操作中的大多数选项都不使用连接,除了 reset_connection,它仍然不会连接到远程

使用目标的配置连接信息在其上执行代码

core

支持:完全

这是一个“核心引擎”功能,并且不像大多数任务操作那样实现,因此无法通过插件系统以任何方式覆盖。

delegation

支持:

可与 delegate_to 和相关关键字结合使用

diff_mode

支持:

在差异模式下时,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息

ignore_conditional

支持:部分

只有某些选项支持条件,并且当它们支持时,它们会“绕过主机循环”,从第一个可用的主机获取值

操作不受条件执行的影响,因此它将忽略 when: 关键字

platform

平台: 所有

可以对其进行操作的目标操作系统/系列

标签

支持:完全

允许使用“tags”关键字来控制是否执行此操作。

until

支持:

表示此操作是否遵循 until/retry/poll 关键字。

注释

注意

另请参阅

另请参阅

ansible.builtin.assert

断言给定的表达式为真。

ansible.builtin.fail

以自定义消息失败。

示例

# Example showing flushing handlers on demand, not at end of play
- ansible.builtin.template:
    src: new.j2
    dest: /etc/config.txt
  notify: myhandler

- name: Force all notified handlers to run at this point, not waiting for normal sync points
  ansible.builtin.meta: flush_handlers

# Example showing how to refresh inventory during play
- name: Reload inventory, useful with dynamic inventories when play makes changes to the existing hosts
  cloud_guest:            # this is fake module
    name: newhost
    state: present

- name: Refresh inventory to ensure new instances exist in inventory
  ansible.builtin.meta: refresh_inventory

# Example showing how to clear all existing facts of targeted hosts
- name: Clear gathered facts from all currently targeted hosts
  ansible.builtin.meta: clear_facts

# Example showing how to continue using a failed target
- name: Bring host back to play after failure
  ansible.builtin.copy:
    src: file
    dest: /etc/file
  remote_user: imightnothavepermission

- ansible.builtin.meta: clear_host_errors

# Example showing how to reset an existing connection
- ansible.builtin.user:
    name: '{{ ansible_user }}'
    groups: input

- name: Reset ssh connection to allow user changes to affect 'current login user'
  ansible.builtin.meta: reset_connection

# Example showing how to end the play for specific targets
- name: End the play for hosts that run CentOS 6
  ansible.builtin.meta: end_host
  when:
  - ansible_distribution == 'CentOS'
  - ansible_distribution_major_version == '6'

作者

  • Ansible核心团队