Molecule启动Docker容器时报创建临时目录失败如何解决
故障原因&解决方案
你遇到的是两个独立故障叠加导致的问题,且因为故障都限定在单个角色的局部配置下,全局操作不生效:
1. 解决Molecule跳过创建环节的问题
Molecule单角色的实例状态缓存默认存储在角色自身的molecule工作目录下,你之前清理的全局~/.cache不涉及该局部缓存,执行以下操作清理:
- 进入对应角色的molecule场景目录,默认路径为
角色根目录/molecule/default/ - 删除局部缓存目录和状态文件:
rm -rf .molecule/ rm -f molecule_state.yml
清理后再执行创建操作就不会再误判实例已存在。
2. 解决Ansible临时目录创建失败的问题
你修改的全局/etc/ansible/ansible.cfg配置被该角色的局部配置覆盖,按以下路径排查:
- 检查角色根目录下是否存在单独的
ansible.cfg文件,确认没有配置错误的remote_tmp参数 - 检查角色molecule配置文件
molecule.yml中的provisioner.config_options段,是否有自定义remote_tmp配置 - 检查角色
vars/目录、defaults/main.yml中是否定义了ansible_remote_tmp变量
你排查到的目录创建报错,是因为容器内部不存在/home/user目录,且路径解析时携带了多余引号,直接在该角色的molecule.yml中强制指定容器内的临时目录为全局可写的/tmp路径即可解决:
provisioner: name: ansible config_options: defaults: remote_tmp: /tmp/.ansible/tmp
完成以上两步后重新执行molecule test即可恢复正常。
内容的提问来源于stack exchange,提问作者Eik
相关产品推荐
相关产品推荐

