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

如何让Ansible Playbook指定角色运行特定标签(无需命令行传参)

用例

我有一个名为test.yml的Playbook,其中执行多个角色:

- name: 'create cnames'
  hosts: sysops_setup_grafana_server

  roles:
  - role: test.sysops.vcenter_vm
  - role: test.sysops.certificate

在test.sysops.vcenter_vm角色中包含多个任务:

---
- name: 'configure active directory'
  ansible.builtin.include_tasks: ad.yml
  tags:
  - 'vcenter_vm'
  - 'vcenter_vm:ad:computer'

- name: 'configure eam'
  ansible.builtin.include_tasks: eam.yml
  tags:
  - 'vcenter_vm'
  - 'vcenter_vm:eam'
  - 'vcenter_vm:eam:service_ou'
  - 'vcenter_vm:eam:groups'


- name: 'configure dns'
  ansible.builtin.include_tasks: dns.yml
  tags:
  - 'vcenter_vm'
  - 'vcenter_vm:dns'
  - 'vcenter_vm:dns:arecords'
  - 'vcenter_vm:dns:cnames'
  - 'vcenter_vm:dns:cleanup'
问题

我希望test.yml在运行test.sysops.vcenter_vm角色时,仅执行带有vcenter_vm:dns:cnames标签的任务,且无需在ansible-playbook test.yml --tags 'vcenter_vm:dns:cnames'命令中显式指定标签。同时因为处于共享环境,我不想修改ansible.cfg文件中的TAGS_RUN配置项。


解决方案

可以通过include_role模块替代直接在roles列表中声明角色,利用apply参数限制该角色仅运行指定标签的任务,无需修改配置或在命令行加参数:

修改后的test.yml如下:

- name: 'create cnames'
  hosts: sysops_setup_grafana_server

  tasks:
    # 仅运行vcenter_vm角色中带vcenter_vm:dns:cnames标签的任务
    - name: Execute cnames tasks from vcenter_vm role
      ansible.builtin.include_role:
        name: test.sysops.vcenter_vm
        apply:
          tags: ['vcenter_vm:dns:cnames']
      tags: ['vcenter_vm:dns:cnames']

    # 正常运行certificate角色的所有任务
    - name: Run certificate role
      ansible.builtin.include_role:
        name: test.sysops.certificate

原理说明

  • include_role的apply参数会将指定的标签应用到角色内的所有任务上,只有匹配该标签的任务才会被执行。
  • 给include_role任务本身加上相同标签,是为了后续如果需要扩展命令行标签时避免冲突,日常运行时无需额外参数。

如果不想修改Playbook,还可以把命令封装成脚本(比如run_test.sh),通过环境变量临时指定标签:

#!/bin/bash
ANSIBLE_TAGS='vcenter_vm:dns:cnames' ansible-playbook test.yml

执行该脚本即可,无需每次手动输入标签参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:42:37