AWX在Azure AKS执行Ansible Playbook时临时目录创建失败求助
问题描述
执行首个Playbook时触发如下错误:
Failed to create temporary directory. In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in "/tmp", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p "
echo ~/.ansible/tmp"&& mkdir "echo ~/.ansible/tmp/ansible-tmp-1747453128.763296-22-41904907215744" && echo ansible-tmp-1747453128.763296-22-41904907215744="echo ~/.ansible/tmp/ansible-tmp-1747453128.763296-22-41904907215744" )
解决方案:通过Helm Values全局配置Ansible临时路径
可以直接在Helm的values文件中添加环境变量,指定Ansible远程临时目录到/tmp路径下,避免家目录权限不足的问题:
- 编辑你的AWX Helm values文件(比如
values.yaml),添加以下配置:
awx_ee: extra_env: - name: ANSIBLE_REMOTE_TMP value: "/tmp/.ansible/tmp"
- 重新部署AWX使配置生效:
helm upgrade awx awx-operator/awx -f values.yaml -n awx
备选方案:针对单个Playbook模板配置
如果不想全局修改,也可以在AWX的Playbook模板中单独设置临时目录:
- 打开目标Playbook模板的编辑页面
- 在「Extra Variables」区域添加:
ansible_remote_tmp: /tmp/.ansible/tmp
原因说明
默认情况下Ansible会尝试在目标主机的用户家目录创建~/.ansible/tmp目录,但如果目标主机的家目录没有写入权限(比如使用受限用户、容器化运行环境),就会触发权限错误。将临时目录切换到/tmp下,因为该目录通常全局可写且符合系统权限策略,能有效规避这类问题。
内容的提问来源于stack exchange,提问作者ITPRO85

