Копия файла AWX не может найти локальные файлы, а файлы, скопированные в локальный файл, не существуют - PullRequest
0 голосов
/ 21 июня 2019

Playbook, который отлично работал на более ранних версиях Awx, теперь выходит из строя после того, как мы обновили AWX до 4.0.0 (с Ansible 2.8.1), так как «Copy» не может найти локальные файлы.

КогдаКопируя файл на удаленный сервер с помощью Copy, Ansible жалуется, что не может найти этот файл.Я пробовал различные локации, в том числе в каталогах virtualenv, таких как / var / opt / rh / rh-python36 / и / opt / rh / rh-python36 / root / tmp / (rh-python36 - это env, выбранный для этой пьесы,другие терпят неудачу намного раньше)

В качестве эксперимента я создал файл с уникальным именем на удаленном сервере и использовал remote_src для копирования этого файла на хост AWX.AWX преуспел в этом и завершил игру.«Отлично», подумал я, а затем искал файл (используя mlocate: updatedb && locate testfile), а также find / | grep testfile - и этот файл просто не существует.

Это похоже на создание AWXвременная файловая структура для сеанса этой пьесы и удаления ее, что делает копирование трудным для использования в любом направлении.

Может кто-нибудь пролить свет?


- hosts: "all"
  become: true

- name: Copy a test file
  hosts: "all"
  tasks:
  - name: copy a test file
    copy:
      src: /tmp/testfile
      dest: /tmp/testfile
      owner: root
      group: root
      mode: '0644'

Traceback (последний вызов был последним): файл "/opt/rh/rh-python36/root/lib/python3.6/site-packages/ansible/plugins/action/copy.py", строка464, в run source = self._find_needle ('files', source) File "/opt/rh/rh-python36/root/lib/python3.6/site-packages/ansible/plugins/action/init .py ", строка 1166, в _find_needle возвращает self._loader.path_dwim_relative_stack (path_stack, dirname, needle) Файл" /opt/rh/rh-python36/root/lib/python3.6/site-packages/ansible/parsing/dataloader.py ", строка 319, в path_dwim_relative_stack повысить AnsibleFileNotFound (file_name = source, paths = [to_text (p) для p в поиске]) ansible.errors.AnsibleFileNotFound: Не удалось найти или получить доступ к / tmp / testfile на Ansible Controller.Если вы используете модуль и ожидаете, что файл будет существовать на удаленном компьютере, см. Параметр remote_src

1 Ответ

0 голосов
/ 21 июня 2019

Ах.После многих часов борьбы с ним у меня есть решение, но оно не кажется правильным.

Я попытался удалить ведущий / из src, сделать его "tmp / testfile" и перезапуститьthe playbook.

В этот раз AWX / Ansible выдал более полезное сообщение об ошибке:

   ansible.errors.AnsibleFileNotFound: Could not find or access 'tmp/satestfile'
    Searched in:
        /var/lib/awx/projects/simon/files/tmp/satestfile
        /var/lib/awx/projects/simon/tmp/satestfile
        /var/lib/awx/projects/simon/files/tmp/satestfile…

Так что он сохраняет вещи в структуре основного каталога, но не любит абсолютные пути, которыекажется странным.

Затем я создал тестовый файл в одном из названных каталогов, и AWX успешно выполнил задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...