You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务器重启后Molecule无法正常启动Docker容器的问题求助

解决Molecule + Ansible Role重启后的实例状态和权限问题

第一步:清理Molecule残留状态,同步实例真实情况

服务器重启后Docker容器已销毁,但Molecule的本地状态缓存还记录着实例存在,才会出现「Skipping, instances already created」的矛盾提示。你需要彻底清理这些无效状态:

  • 先执行Molecule自带的销毁命令,清除残留实例和状态:
    molecule destroy
    
  • 如果销毁命令未完全清理干净,手动删除角色目录下的Molecule状态文件夹:
    rm -rf .molecule/
    
  • 之后重新创建实例:
    molecule create
    

第二步:修复Ansible远程临时目录权限问题

molecule converge时的认证失败,核心原因是Ansible默认使用远程用户的~/.ansible/tmp目录,但测试容器里的用户可能没有家目录、或家目录权限受限。你可以用以下几种方式解决:

方法1:修改全局Ansible配置(ansible.cfg)

在配置文件中添加或修改remote_tmp参数,指定到/tmp下的开放路径:

[defaults]
remote_tmp = /tmp/.ansible/tmp

/tmp目录通常权限宽松,不会出现访问限制问题。

方法2:在Molecule playbook中临时指定

不想修改全局配置的话,直接在角色的converge.yml里设置临时变量:

- name: Converge
  hosts: all
  vars:
    ansible_remote_tmp: /tmp/.ansible/tmp
  roles:
    - role: your_role_name

方法3:自定义测试镜像时预配置权限

如果用自定义Docker镜像作为测试实例,在镜像构建时提前创建目录并设置权限:

RUN mkdir -p ~/.ansible/tmp && chmod 700 ~/.ansible/tmp

验证效果

完成上述操作后,重新执行命令验证:

molecule create && molecule converge

应该就能正常执行Gathering Facts和后续Role任务了。

内容的提问来源于stack exchange,提问作者zegoat7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:47:22