Ansible中的Git模块在临时目录上的权限被拒绝 [英] Git module in Ansible gets permission denied on tmp directory

查看:0
本文介绍了Ansible中的Git模块在临时目录上的权限被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过Anable使用git模块克隆远程存储库。任务配置如下:

- name: Clone repo
  git:
    repo: "{{ repository }}"
    dest: "/home/{{ username }}/abc"
    key_file: "{{ git_key_file }}"
  register: code_update

但不幸的是,它失败了,错误如下:

fatal: [xyz]: FAILED! => {"changed": false, "cmd": "/usr/bin/git clone --origin origin '' /home/xyz/abc", "msg": "Cloning into '/home/xyz/abc'...
fatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied
fatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied
fatal: unable to fork", "rc": 128, "stderr": "Cloning into '/home/xyz/abc'...
fatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied
fatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied
fatal: unable to fork
", "stderr_lines": ["Cloning into '/home/xyz/abc'...", "fatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied", "fatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied", "fatal: unable to fork"], "stdout": "", "stdout_lines": []}
值得一提的是,我可以直接在远程服务器上克隆存储库。我还尝试使用environment更改TMPTMPDIR设置,但没有更改。

如有任何回复,我们将不胜感激...

推荐答案

/tmp在服务器上使用选项noexec挂载,因此ansible无法执行自己的临时脚本。建议的修复方法是设置环境变量TMPDIR

 - name: Clone the git repo in a temporary directory
      environment:
        TMPDIR: "/home/{{ username }}/tmp"
      git:
        repo: "{{ repository }}"
        dest: "/home/{{ username }}/abc"
        key_file: "{{ git_key_file }}"

确保该目录存在。

参见https://github.com/ansible/ansible/issues/30064,特别是。https://github.com/ansible/ansible/issues/30064#issuecomment-487149251

这篇关于Ansible中的Git模块在临时目录上的权限被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆