问题:
Warning alert:警告:
/var/lib/awx/projects 中没有可用的 playbook 目录。该目录可能是空目录,或所有内容都已被分配给其他项目。创建一个新目录并确保 playbook 文件可以被 "awx" 系统用户读取,或者使用上述的 Source Control Type 选项从源控制控制选项直接获取 AWX。

主要原因:
因为 PVC 挂载未生效。我们通过修改 awx-ubuntu.yml,将挂载方式从 PVC 改为直接使用 hostPath,并结合 minikube mount,让 AWX 成功识别到 /var/lib/awx/projects/my_playbooks 目录,最终在 AWX 界面创建了项目
解决方法:
优化后的步骤:重新创建 AWX 项目
1. 创建新的 Playbook 目录和文件
直接创建新的 Playbook 目录和文件
sudo mkdir -p /var/lib/awx/projects/my_playbooks
sudo tee /var/lib/awx/projects/my_playbooks/test_playbook.yml > /dev/null <<EOF
---
- name: Test Playbook
hosts: localhost
tasks:
- name: Print message
ansible.builtin.debug:
msg: "This is a test playbook"
EOF
leo@leo:~$ kubectl exec -n ansible-awx awx-ubuntu-task-hash -- id
uid=1000(awx) gid=0(root) groups=0(root)
sudo chown -R 1000:1000 /var/lib/awx/projects
这里的1000是awx的uid
sudo chmod -R 755 /var/lib/awx/projects
2. 将主机目录挂载到 Minikube VM
确保主机目录通过 minikube mount 映射到 Minikube VM。
- 在新终端运行挂载命令:
minikube mount /var/lib/awx:/var/lib/awx- 打开一个新终端(可以用 Ctrl+Shift+T),运行此命令,保持终端打开。
- 预期输出:
* Successfully mounted /var/lib/awx to /var/lib/awx * NOTE: This process must stay alive for the mount to be accessible ...
3. 确保 AWX 配置使用 hostPath 挂载
我们已经确认 awx-ubuntu.yml 使用 hostPath 挂载(之前修改过),但需要确保配置正确。
-
编辑 awx-ubuntu.yml:
nano ~/awx-operator-2.19.0/awx-ubuntu.yml确保配置如下:
--- apiVersion: awx.ansible.com/v1beta1 kind: AWX metadata: name: awx-ubuntu namespace: ansible-awx spec: service_type: NodePort image_pull_policy: IfNotPresent projects_persistence: false # 禁用 PVC extra_volumes: | - name: projects hostPath: path: /var/lib/awx/projects type: Directory web_extra_volume_mounts: | - mountPath: /var/lib/awx/projects name: projects task_extra_volume_mounts: | - mountPath: /var/lib/awx/projects name: projects web_resource_requirements: requests: cpu: 50m memory: 128Mi task_resource_requirements: requests: cpu: 150m memory: 384Mi ee_resource_requirements: requests: cpu: 150m memory: 192Mi -
应用配置:
kubectl apply -f ~/awx-operator-2.19.0/awx-ubuntu.yml -n ansible-awx
4. 删除 AWX 相关的 Task 和 Web Pod:
- 查看当前 Pod 名称:
预期输出示例:kubectl get pods -n ansible-awxNAME READY STATUS RESTARTS AGE awx-operator-controller-manager-8494c546d7-f9qhl 2/2 Running 6 (29d ago) 29d awx-ubuntu-postgres-15-0 1/1 Running 3 (29d ago) 29d awx-ubuntu-task-<hash> 4/4 Running 0 <time> awx-ubuntu-web-<hash> 3/3 Running 0 <time> - 删除 AWX 相关的 Task 和 Web Pod:
- 直接指定 Pod 名称删除:
kubectl delete pod awx-ubuntu-task-<hash> -n ansible-awx kubectl delete pod awx-ubuntu-web-<hash> -n ansible-awx- 替换 <hash> 为实际 Pod 名称(从上一步输出中获取)。
- 直接指定 Pod 名称删除:
- 等待新 Pod 启动:
等待新 Pod 进入 Running 状态。kubectl get pods -n ansible-awx
5. 设置端口转发以访问 AWX 界面
- 终止之前的端口转发进程:
pkill -f "kubectl port-forward" - 重新设置端口转发:
nohup kubectl port-forward awx-ubuntu-web-<new-hash> 8052:8052 -n ansible-awx --address 0.0.0.0 &- 替换 <new-hash> 为新的 awx-ubuntu-web Pod 名称。


1317



被折叠的 条评论
为什么被折叠?



