Ansible - как заставить задачу провалиться на основе конкретного вывода - PullRequest
0 голосов
/ 21 октября 2018

Привет У меня есть задача, требующая, чтобы ftp файл был удален из удаленного ящика на управляемую машину. Я использую FTP, основанный на ожиданиях, поэтому хочу, чтобы с ответом произошел сбой, если файл не существует на удаленном ящике. Следующий код - мой.Я использую переменную регистра. Но я не вижу отладку, отображающую содержимое регистра.

     - name: copy files remote
       shell: |
         set timeout 1000
         spawn ftp {{ buildIP }}

         expect ":"
         send "{{ build_user }}\n"

    expect "ssword:"
    send "{{ build_password }}\n"

    expect "ftp>"
    send "get {{ build_path }} /root/Desktop/Sanity/{{  TID }}/{{ Image_dir }}/{{ build_filename }}\n"

    expect "ftp>"
    send "quit\n"

    set multiPrompt {[#$]}
    expect -re $multiPrompt
    exit 0
  args:
    executable: /usr/bin/expect
  register: shell_output
  tags: copy_source_code
- debug:
    var: shell_output.stdout_lines

1 Ответ

0 голосов
/ 21 октября 2018

Я бы порекомендовал использовать get_url для извлечения файлов с FTP вместо ожидаемого. Он покажет, была ли задача не выполнена или успешно выполнена в повторном воспроизведении

пример воспроизведения:

---
- hosts: localhost
  tasks:
    - name: FTP Download
      get_url: url=ftp://username:password@localhost/file.zip dest=/tmp
      register: get_url_result

еслифайл отсутствует на FTP-сервере, вывод будет примерно таким:

PLAY RECAP ********************************************************

localhost: ok = 1 изменено = 0 недоступно = 0
failed = 1

В подробностях ошибки задачи вы также можете найти ошибку "not found"

...