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

Ansible tower_host模块批量从多清单删除主机方法

问题根因

你的playbook未生效有两个核心问题:

  1. tower_host模块的inventory参数仅支持传入单个清单的名称或ID,不支持直接传入清单列表做批量处理,你传列表值时模块无法正确解析参数,自然不会执行删除动作。
  2. 操作Tower/AWX配置的任务是通过调用平台开放API实现的,不需要连接到目标业务主机执行,你playbook里hosts: [MYHOST]的写法是错误的,这类任务应当在能正常访问Tower API的控制节点(通常是localhost)上运行。
单任务批量删除实现方案

不需要编写3个独立任务,直接使用Ansible内置的loop关键字遍历目标清单列表即可,单任务就能完成所有清单下的主机移除操作,参考playbook如下:

---
- hosts: localhost
  gather_facts: false
  # 如果你使用的是新版AWX/AAP平台,需要提前声明对应的集合
  collections:
    - awx.awx
  tasks:
    - name: 从指定清单中批量移除目标主机
      tower_host:
        name: "{{ vm_hostname }}"
        inventory: "{{ item }}"
        state: absent
      # 在这里列出所有需要移除主机的清单即可
      loop:
        - "RedHat"
        - "RedHat-Hors-Prod"
        - "RedHat-Prod"

如果后续需要调整要操作的清单范围,只需要修改loop下的列表值即可,不需要新增或修改任务逻辑。如果你需要实现「自动移除主机关联的所有清单,不用手动列清单名」的效果,可以先通过API查询该主机关联的所有清单ID,再传入循环做删除即可,针对你当前明确指定3个清单的场景,上面的写法完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:21:19