#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
в прошлой жизни.