1.action

定义:定义任务执行的操作,通常对应一个模块或操作插件。

示例

- name: 使用 ping 模块测试连接
  ansible.builtin.ping:

2. any_errors_fatal

定义:强制在任何主机发生未处理任务错误时,终止所有主机的任务并结束当前 play。

示例

- name: 强制错误传播
  hosts: all
  any_errors_fatal: true
  tasks:
    - name: 执行命令
      command: /bin/false

3. args

定义:以字典形式传递参数到任务中。

示例

- name: 使用 args 传递参数
  ansible.builtin.command:
    cmd: /usr/bin/echo
  args:
    chdir: /tmp

4. async,poll

定义:async异步运行任务,值为最大运行时间(秒); poll 设置检查事务执行完成的轮询间隔时间。(如下为5秒检测一次是否执行完成,完成将进行下一个任务)

示例

- name: 异步运行任务
  ansible.builtin.command: /bin/sleep 15
  async: 30
  poll: 5

5. become

定义:是否使用特权提升。

示例

- name: 以 root 用户执行任务
  command: whoami
  become: true

6. changed_when

定义:覆盖任务的默认 changed 状态。

示例

- name: 强制任务标记为未改变
  ansible.builtin.command: /bin/true
  changed_when: false

7. environment

定义:向任务提供环境变量。

示例

- name: 设置环境变量
  command: echo $MYVAR
  environment:
    MYVAR: HelloWorld

8. failed_when

定义:覆盖任务的默认 failed 状态。

示例

- name: 强制任务失败
  command: /bin/true
  failed_when: true

9. ignore_errors

定义:忽略任务失败并继续执行后续任务。

示例

- name: 忽略错误
  command: /bin/false
  ignore_errors: yes

10. loop

定义:对任务进行循环,每次迭代将当前值赋予 item

示例

- name: 循环示例
  command: echo "{{ item }}"
  loop:
    - one
    - two
    - three

11. register

定义:存储任务返回的数据到变量中。

示例

- name: 注册变量
  command: whoami
  register: result

- name: 打印变量
  debug:
    msg: "当前用户是 {{ result.stdout }}"

12. remote_user

定义:指定连接目标主机时使用的用户。

示例

- name: 使用特定用户执行任务
  hosts: all
  remote_user: myuser
  tasks:
    - name: 检查主机
      ansible.builtin.ping:

13. tags

定义:为任务添加标签,以便从命令行选择性运行任务。

示例

- name: 添加标签
  hosts: all
  tasks:
    - name: 只运行带有标签的任务
      command: echo "Hello"
      tags:
        - hello

# 运行命令时指定标签
# ansible-playbook playbook.yml --tags hello

14. timeout

定义:设置任务的执行超时时间,超时将中断任务。

示例

- name: 设置超时
  command: /bin/sleep 30
  timeout: 10

15. vars

定义:定义任务中的变量。

示例

- name: 定义变量
  vars:
    greeting: "Hello, World!"
  tasks:
    - name: 打印变量
      debug:
        msg: "{{ greeting }}"

16. when

定义:条件表达式,决定是否运行任务。

示例

- name: 只有在条件满足时执行
  command: echo "条件满足"
  when: ansible_facts['os_family'] == "Debian"