AWX Playbook运行时如何安装使用Ansible win_updates集合?
解决方案
1. 正确获取已安装Windows更新列表
你要的是查询已安装更新,不是安装更新,ansible.windows.win_updates默认是执行安装操作,得调整参数改成仅查询:
- name: 检查Windows已安装更新 hosts: windows_servers gather_facts: true tasks: - name: 查询已安装更新清单 ansible.windows.win_updates: state: installed list_only: yes register: installed_updates - name: 输出已安装更新详情 debug: var: installed_updates.installed
这里state: installed指定目标为已安装更新,list_only: yes表示只罗列结果不执行安装,最后用register把结果存下来,通过debug输出。
2. AWX中处理集合依赖
你说不会用requirements.yml,在AWX里这么操作:
- 先在项目根目录创建
requirements.yml,内容:collections: - name: ansible.windows version: latest # 也可以写具体版本号,比如2.1.0 - 打开AWX的项目设置,找到「更新选项」,勾选「从requirements.yml安装集合」,这样每次AWX拉取项目代码时,会自动安装所需的ansible.windows集合。
如果是手动上传Playbook到AWX,也可以先在本地执行ansible-galaxy collection install ansible.windows,把本地~/.ansible/collections/ansible_collections/ansible/windows目录和Playbook打包一起上传,AWX就能找到模块。
3. 排查role调用失败的问题
你之前用roles: - ansible.windows.win_updates是错的——ansible.windows.win_updates是模块不是role,ansible.windows集合里没有对应的role,必须用tasks调用模块,不能用role方式加载。
4. 测试覆盖率补充建议
要满足测试要求,除了更新检查,还可以加这些测试项:
- 检查必备Windows服务(比如Remote Desktop、WinRM)是否处于运行状态
- 验证系统版本、OS补丁级别是否符合部署标准
- 检查磁盘剩余空间、内存使用率是否达标
- 测试虚拟机网络连通性(比如能否访问指定业务端口)
内容的提问来源于stack exchange,提问作者Tufty
相关产品推荐
相关产品推荐

