You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何将多个标签合并为单个`all`标签?

Ansible实现自定义all标签聚合指定标签任务

Ansible支持将多个指定标签合并为一个all标签来执行,有两种常用实现方式:

方式一:给目标任务统一添加all标签

直接在需要纳入all标签的每个任务(或Play/Role)上,同时打上all标签和原有标签。例如:

- name: 安装Apache
  ansible.builtin.yum:
    name: httpd
    state: present
  tags: ['install', 'all']

- name: 配置Apache SSL
  ansible.builtin.template:
    src: ssl.conf.j2
    dest: /etc/httpd/conf.d/ssl.conf
  tags: ['ssl', 'all']

# 其他需要纳入的任务同理,都添加`all`标签

之后执行你想要的命令:

ansible-playbook apache.yml -e 'TARGET=bs' -i inventories/devqa-servers.ini -b -K -u root --ask-vault-pass --ask-pass --tags 'all'

这样只会运行带有all标签的任务,也就是你指定的那些标签对应的任务。

方式二:利用Play级标签继承

如果所有需要纳入的任务都在同一个Play中,可以直接在Play级别设置包含all和所有目标标签的标签列表,Play下的所有任务会自动继承这些标签:

- name: Apache部署Play
  hosts: "{{ TARGET }}"
  tags: ['all', 'normal_vars', 'install', 'configure', 'ssl', 'custom_config', 'services', 'mdm', 'enterpriseenrollment_80', 'enroll']
  tasks:
    # 这里写所有需要执行的任务,无需逐个加标签

这种方式更高效,无需给每个任务单独打标签,执行同样的--tags 'all'命令即可触发所有目标任务。

注意事项

  • Ansible内置的all标签默认会匹配所有未被排除的任务,如果你的Playbook中存在其他未打标签的任务,直接用内置all会一并执行。上面两种方式是自定义all标签的范围,仅包含你指定的任务。
  • 如果需要完全替代内置all的行为,确保只有带有all标签的任务被执行,不要在其他无关任务上添加all标签。

内容的提问来源于stack exchange,提问作者Bharath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:30:53