Модуль Git в Ansible получает разрешение на доступ к каталогу tmp - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь клонировать удаленный репозиторий с помощью Ansible с помощью модуля 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'...\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: unable to fork", "rc": 128, "stderr": "Cloning into '/home/xyz/abc'...\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: unable to fork\n", "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": []}

Стоит отметить, что я могу клонировать репозиторий непосредственно на удаленном сервере. Также я попытался изменить TMP и TMPDIR, используя environment, но ничего не изменилось.

Любой ответ будет оценен ...

1 Ответ

2 голосов
/ 10 марта 2020

/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, esp. https://github.com/ansible/ansible/issues/30064#issuecomment -487149251

...