Molecule测试未生效remote_tmp配置的问题排查求助
排查Molecule测试Ansible角色时remote_tmp配置失效的问题
以下是几个针对性的排查方向:
1. 检查Ansible配置优先级覆盖
Ansible配置读取有明确的优先级顺序,后续配置会覆盖前面的:
- 命令行参数(
--remote-tmp) - 环境变量(
ANSIBLE_REMOTE_TMP) - 项目根目录下的
ansible.cfg(如果存在,会覆盖全局和Molecule生成的配置) - Molecule缓存目录的
ansible.cfg - 全局
/etc/ansible/ansible.cfg
执行以下操作排查:
- 运行
echo $ANSIBLE_REMOTE_TMP,确认环境变量没被设置为其他值 - 检查Molecule项目根目录是否存在自定义
ansible.cfg,如果有,查看其中的remote_tmp配置
2. 验证Molecule的配置是否正确传递
在molecule.yml的provisioner中开启debug模式,强制输出Ansible实际加载的配置:
provisioner: name: ansible config_options: defaults: remote_tmp: /tmp debug: true
执行molecule converge,查看输出中的Ansible配置段,确认remote_tmp是否确实被设置为/tmp。
3. 检查目标测试主机的/tmp权限与安全限制
就算配置正确,目标主机的/tmp目录权限异常或安全策略限制也会导致创建失败:
- 用
molecule login进入测试实例,执行ls -ld /tmp,确认权限为drwxrwxrwt(必须有t位,普通用户才能创建临时文件) - 检查SELinux状态:
getenforce,如果是Enforcing,临时执行setenforce 0后重新测试,若问题解决则需调整SELinux策略或在角色中添加对应配置
4. 排查版本兼容性问题
部分旧版Molecule与Ansible组合存在配置传递bug,尝试升级到稳定版:
- 升级Molecule:
pip install --upgrade molecule molecule-plugins - 同步升级Ansible到对应兼容版本(参考官方版本兼容矩阵)
5. 直接在Playbook中强制设置
如果上述方法无效,可在Playbook中直接设置变量(优先级最高)验证:
- name: Converge hosts: all vars: ansible_remote_tmp: /tmp roles: - role: fake_role
内容的提问来源于stack exchange,提问作者Red Cricket
相关产品推荐
相关产品推荐

