Kubernetes上AWX挂载本地目录后UI无法识别剧本的问题求助
解决AWX UI无法识别本地挂载剧本的问题
核心问题分析
你仅为web容器挂载了hostPath卷,但AWX的任务执行依赖的task容器也需要访问相同的项目文件,同时AWX内部的项目管理服务需要正确识别挂载目录的权限与内容,这是导致UI无法识别剧本的核心原因。
具体修复步骤
1. 同步task容器的卷挂载
修改AWX CRD配置,为task容器添加相同的hostPath卷挂载,确保task容器能访问到剧本文件:
apiVersion: awx.ansible.com/v1beta1 kind: AWX metadata: name: awx spec: service_type: nodeport projects_persistence: true projects_storage_access_mode: ReadWriteOnce web_extra_volume_mounts: | - name: static-data mountPath: /var/lib/projects - name: manual-projects mountPath: /var/lib/awx/projects # 新增task容器的卷挂载配置 task_extra_volume_mounts: | - name: manual-projects mountPath: /var/lib/awx/projects extra_volumes: | - name: static-data persistentVolumeClaim: claimName: public-static-data-pvc - name: manual-projects hostPath: path: /var/lib/awx/projects # 指定类型为目录,避免容器误创建文件 type: Directory
2. 修复文件权限
容器内的awx用户需要对挂载目录拥有读写权限,在K8s节点上执行以下命令调整本地路径权限:
sudo chown -R 1000:1000 /var/lib/awx/projects sudo chmod -R 755 /var/lib/awx/projects
若不确定容器内awx用户的UID/GID,可执行
kubectl exec -it deploy/awx-web -c awx-web -n awx -- id awx查看。
3. 在AWX UI中手动配置项目
重新部署AWX并等待Pod就绪:
kubectl apply -f your-awx-deploy.yml -n awx # 等待web和task容器部署完成 kubectl rollout status deploy/awx-web -n awx kubectl rollout status deploy/awx-task -n awx
进入AWX UI创建项目时,选择Manual类型,将项目路径设置为/var/lib/awx/projects,保存后即可识别到该路径下的playbook.yml。
4. 额外排查项(若问题仍存在)
- 若为多节点K8s集群,hostPath仅在单个节点生效,建议替换为NFS等共享存储。
- 若节点开启SELinux,需调整挂载目录的上下文:
sudo chcon -Rt container_file_t /var/lib/awx/projects
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

