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

Ansible执行任务失败:目标机器无可用临时目录求助

Ansible任务失败:目标机器无可用临时目录

错误详情

执行Ansible任务时突然失败,报错信息如下:

changed :   false
module_stderr   :   Shared connection to 10.131.132.11 closed.\r\n
module_stdout   :   Traceback (most recent call last):\r\n  File \"/root/.ansible/tmp/ansible-tmp-1662460628.845051-105063944436404/AnsiballZ_setup.py\", line 113, in <module>\r\n    try:\r\n  File \"/root/.ansible/tmp/ansible-tmp-1662460628.845051-105063944436404/AnsiballZ_setup.py\", line 98, in _ansiballz_main\r\n    json_params = f.read()\r\n  File \"/usr/lib64/python2.7/tempfile.py\", line 321, in mkdtemp\r\n    dir = gettempdir()\r\n  File \"/usr/lib64/python2.7/tempfile.py\", line 265, in gettempdir\r\n    tempdir = _get_default_tempdir()\r\n  File \"/usr/lib64/python2.7/tempfile.py\", line 212, in _get_default_tempdir\r\n    (\"No usable temporary directory found in %s\" % dirlist))\r\nIOError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/root']\r\n
msg :   MODULE FAILURE\nSee stdout/stderr for the exact error
rc  :   1

核心问题是目标机器(10.131.132.11)找不到可用临时目录,系统尝试的/tmp、/var/tmp等路径均无法正常使用。

排查与修复步骤

1. 登录目标机器检查临时目录状态

  • 检查目录是否存在:
    ls -ld /tmp /var/tmp /usr/tmp
    
  • 检查目录权限:
    ls -l / | grep tmp
    
    确保目录对运行Ansible的用户(此处为root)有读、写、执行权限,/tmp通常需设置1777权限(粘滞位)。
  • 检查磁盘空间:
    df -h
    
    确认磁盘是否已满,满盘会导致无法创建临时文件。
  • 检查挂载参数:
    mount | grep tmp
    
    查看/tmp等目录是否被挂载为noexec(禁止执行)或ro(只读),这会导致Python无法创建临时执行环境。

2. 针对性修复

  • 若目录不存在,创建并设置权限:
    mkdir -p /tmp && chmod 1777 /tmp
    
  • 若磁盘满,清理日志、临时文件等无用数据释放空间;
  • 若挂载参数异常,临时重新挂载:
    mount -o remount,rw,exec /tmp
    
    如需永久生效,修改/etc/fstab中对应挂载项的参数后重新挂载。

3. Ansible临时规避方案

如果暂时无法修复目标机器,可在Ansible中指定自定义临时目录:

  • 在Playbook中配置:
    - name: 示例任务
      hosts: 10.131.132.11
      vars:
        ansible_tmp_dir: /root/ansible_temp
      tasks:
        - name: 创建自定义临时目录
          file:
            path: "{{ ansible_tmp_dir }}"
            state: directory
            mode: '0700'
        # 后续任务...
    
  • 或在ansible.cfg中全局设置:
    remote_tmp = /root/ansible_temp
    

内容的提问来源于stack exchange,提问作者Kona Laxman Deepak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:30:51