如何在Docker部署的AWX 17.0.1中升级Ansible Collection?
解决AWX 17.0.1优先使用最新community.vmware集合的问题
针对你遇到的AWX仍调用内置旧版vmware模块的问题,可按以下步骤逐一排查解决:
1. 确保集合安装到AWX系统级集合目录
AWX任务容器默认优先读取系统级集合目录/usr/share/ansible/collections,而非用户目录~/.ansible/collections。你之前的安装可能路径不对,导致AWX未识别。
- 进入awx_task容器:
docker exec -it awx_task /bin/bash - 安装集合到系统级目录:
ansible-galaxy collection install community.vmware -p /usr/share/ansible/collections - 验证安装:
ansible-galaxy collection list community.vmware
2. 剧本中明确使用带命名空间的模块
旧版独立模块vmware_guest和集合模块community.vmware.vmware_guest是两个不同的实体。AWX默认会优先匹配不带命名空间的旧模块,因此必须修改剧本,将模块名替换为带命名空间的版本:
- name: 管理VMware虚拟机 community.vmware.vmware_guest: hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" # 其他参数...
3. 替换内置旧模块(临时应急方案)
如果上述方法未生效,可直接替换AWX内置的旧模块文件(注意:容器重启后会失效,需配合持久化挂载或自定义镜像):
- 备份旧模块:
cp /usr/lib/python3.6/site-packages/ansible/modules/cloud/vmware/vmware_guest.py /usr/lib/python3.6/site-packages/ansible/modules/cloud/vmware/vmware_guest.py.bak - 复制集合中的新模块到内置路径:
cp /usr/share/ansible/collections/ansible_collections/community/vmware/plugins/modules/vmware_guest.py /usr/lib/python3.6/site-packages/ansible/modules/cloud/vmware/
4. 自定义AWX镜像(长期稳定方案)
为避免容器重启后配置丢失,建议自定义AWX镜像,预先安装最新集合:
- 创建
Dockerfile:FROM ansible/awx:17.0.1 RUN ansible-galaxy collection install community.vmware - 构建自定义镜像:
docker build -t my-awx:17.0.1 . - 修改AWX部署配置(如docker-compose.yml),将
awx_task和awx_web的镜像替换为自定义的my-awx:17.0.1,然后重启服务。
内容的提问来源于stack exchange,提问作者leesangwoo
相关产品推荐
相关产品推荐

