Ansible не будет копировать файл. Дает разрешение, в котором отказано

#ansible

Вопрос:

Это очень простая задача. Он копирует файл на локальном компьютере из одного каталога в другой. Мне все время отказывают в разрешении. Я удалил блок переменных из приведенного ниже фрагмента. Я протестировал с помощью командной строки и могу обрабатывать и изменять файл между этими двумя каталогами. Любые предложения будут оценены по достоинству.

 - name: Packing up $HOME and moving to FileExpress
  hosts: localhost
  connection: local
  become: False
  tasks:
    - name: Copy package
      ansible.builtin.copy:
        src: "/tmp/{{ package }}"
        dest: "{{ fedir }}/{{ package }}"
        mode: 0644
        remote_src: True
 

Ошибка, которую я получаю, приведена ниже. Все, что связано с переменной, было окружено {{}}

 fatal: [localhost]: FAILED! => {"changed": false, "msg": "failed to copy: /tmp/{{package}} to /{{fedir}}", "traceback": "Traceback (most recent call last):n  File "/tmp/ansible_ansible.legacy.copy_payload_8zc9gcnj/ansible_ansible.legacy.copy_payload.zip/ansible/modules/copy.py", line 670, in mainn  File "/home/{{user}}/.pyenv/versions/3.9.5/lib/python3.9/tempfile.py", line 332, in mkstempn    return _mkstemp_inner(dir, prefix, suffix, flags, output_type)n  File "/home/{{user}}/.pyenv/versions/3.9.5/lib/python3.9/tempfile.py", line 251, in _mkstemp_innern    fd = _os.open(file, flags, 0o600)nPermissionError: [Errno 13] Permission denied: b'/{{fedir}}/tmp8b2t3qrz'n"}
 

Комментарии:

1. Вы думаете, что вы есть able to cp and mv the file between these two directories . Ансибль говорит тебе permission denied . Либо вы полностью ошибаетесь, либо ansible использует другого пользователя, чем тот, с которым вы тестировали.

2. Я довольно тщательно протестировал операции копирования/перемещения. Я также выполнил задачу, чтобы выгнать ответ для «whoami» в отладочной информации, чтобы проверить пользователя. Вот почему я в тупике.

Ответ №1:

После тестирования я все еще не знаю, почему это не сработает, но модуль копирования не будет работать. Так же как и использование командного модуля для запуска сценария, который сделал копию. Я попытался использовать модуль оболочки для запуска сценария, и это сработало.

Ответ №2:

Попробуйте become: True предоставить sudo привилегии команде. Ansible не использует того же пользователя, которого вы используете при тестировании из командной строки. Прошло много времени с тех пор, как я прикасался к Ансиблю, и его, возможно, не лучший способ сделать это, но я помню, как решал множество проблем become: True в прошлой жизни.