如何在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
相关产品推荐
相关产品推荐

