Ansible 2.4 Модуль URI загружает файл (1 КБ), даже если он не существует - URL возвращает ошибку 404 - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь запустить следующий код, ища файл myfile.JAR, который не существует по указанному URL. Я ожидаю, что эта задача завершится с ошибкой и не загрузит какой-либо файл.

    - name: Download using URI
      uri:
        url: "http://1.2.3.4:8081/myurl/myfile.JAR"
        dest: ./
        method: GET
        status_code: [200] 

Задача не выполнена, но в папке ./ имеется файл myfile.JAR размером 1 КБ.

Почему он загружает этот файл (истинный размер составляет 20 МБ)

1 Ответ

0 голосов
/ 24 апреля 2020

Небольшое изменение вашей книги воспроизведения на

---
- hosts: localhost
  connection: local
  gather_facts: False

  tasks:
  - name: Download using URI
    uri:
      url: "http://www/myurl/myfile.JAR"
      dest: ./uri.jar
    ignore_errors: yes
  - name: Download using GET_URL
    get_url:
      url: "http://www/myurl/myfile.JAR"
      dest: ./get_url.jar
    ignore_errors: yes

приводит к следующему:

  • uri загружает файл, то есть содержимое сообщения об ошибке html webserver.
  • get_url не загружает ничего, что не существует

Почему?

get_url специально для загрузки содержимого данного URL. Если код состояния http не равен 200, то ничего не загружается, это означает, что если файл не существует на удаленном веб-сервере, задача только сбой.

uri, с другой стороны, для взаимодействия с веб-сервисами, такими как REST или SOAP или что нибудь еще. Например, при сбое повторного запроса с кодом состояния http 400 в теле ответа может быть передана дополнительная информация. Примеры см. https://praveer09.github.io/technology/2016/07/07/rest-error-responses-in-spring-boot/ И именно это содержимое загружается с помощью задачи uri. Сохраненный результат затем может быть обработан другими задачами.

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