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

如何在Ansible Tower/AWX中批量启用/禁用主机以控制作业执行范围?

批量启用/禁用清单主机的实现方案

当然可以实现批量操作,不管是直接选多个主机还是针对整组主机一键切换状态,下面是几种实用方法:

方法1:Web UI可视化批量操作

  • 进入Inventories页面,打开目标清单
  • 在主机列表里,用勾选框批量选中需要操作的主机(还能通过搜索、筛选快速定位目标主机)
  • 点击页面顶部的Actions下拉菜单,选择Disable Hosts或Enable Hosts,确认后就能完成批量状态切换
  • 如果要操作整组主机:先进入目标主机组,切换到Hosts标签页,直接全选组内所有主机,再执行上述Actions操作即可

方法2:API命令行批量操作

如果需要自动化执行,用AWX/Tower的API更高效:

  • 先获取目标组下的所有主机ID:
    # 替换你的AWX地址、账号密码和组ID
    curl -s -u admin:your-password https://awx.example.com/api/v2/groups/123/hosts/ | jq '.results[] | .id'
    
  • 批量更新主机状态(以禁用为例):
    # 循环修改每个主机的enabled字段为false
    for host_id in $(curl -s -u admin:your-password https://awx.example.com/api/v2/groups/123/hosts/ | jq '.results[] | .id'); do
      curl -u admin:your-password -X PATCH -H "Content-Type: application/json" https://awx.example.com/api/v2/hosts/$host_id/ -d '{"enabled": false}'
    done
    

方法3:Ansible Playbook自动化管理

编写Playbook用官方模块批量操作,适合定期或重复执行的场景:

- name: 批量禁用指定组内的所有主机
  hosts: localhost
  tasks:
    - name: 获取目标组下的主机列表
      awx.awx.host_info:
        controller_host: https://awx.example.com
        controller_username: admin
        controller_password: your-password
        group: "web-servers"  # 替换成你的目标组名称
        validate_certs: false
      register: host_list

    - name: 切换主机状态为禁用
      awx.awx.host:
        controller_host: https://awx.example.com
        controller_username: admin
        controller_password: your-password
        name: "{{ item.name }}"
        enabled: false  # 改为true就是启用
        validate_certs: false
      loop: "{{ host_list.hosts }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:40:40