uri – Взаимодействие с веб-сервисами
Обзор
- Взаимодействует с веб-сервисами HTTP и HTTPS и поддерживает механизмы аутентификации HTTP Digest, Basic и WSSE.
- Для целей Windows используйте модуль win_uri.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| body raw | Тело http запроса/ответа веб-сервису. Если body_format установлено в 'json', оно будет принимать уже отформатированную строку JSON или преобразовывать структуру данных в JSON. Если body_format установлено в 'form-urlencoded', оно будет преобразовывать словарь или список кортежей в строку 'application/x-www-form-urlencoded'. (Добавлено в v2.7) | |
| body_format строка добавлено в 2.0 |
| Формат сериализации тела. При установке в json или form-urlencoded, кодирует аргумент тела, если необходимо, и автоматически устанавливает заголовок Content-Type соответствующим образом. Начиная с 2.3, можно переопределить заголовок `Content-Type` при установке в json или form-urlencoded через параметр headers. |
| client_cert путь добавлено в 2.4 | Файл цепочки сертификатов в формате PEM, используемый для аутентификации SSL клиента. Этот файл также может содержать ключ, и если ключ включён, client_key не требуется | |
| client_key путь добавлено в 2.4 | Файл в формате PEM, содержащий ваш закрытый ключ, используемый для аутентификации SSL клиента. Если client_cert содержит как сертификат, так и ключ, этот параметр не требуется. | |
| creates путь | Имя файла. Если файл уже существует, этот шаг не будет выполнен. | |
| dest путь | Путь для загрузки файла (при необходимости). Если dest — это директория, будет использовано имя файла с удалённого сервера. | |
| follow_redirects строка |
| Указывает, следует ли модулю URI перенаправлению. all будет следовать всем перенаправлениям. safe будет следовать только «безопасным» перенаправлениям, где «безопасный» означает, что клиент выполняет только GET или HEAD для URI, на который он перенаправляется. none не будет следовать никаким перенаправлениям. Обратите внимание, что yes и no поддерживаются для обратной совместимости, где yes эквивалентно all, а no эквивалентно safe. yes и no устарели и будут удалены в будущих версиях Ansible. |
| force логическое |
| Если yes не получать кэшированную копию.псевдонимы: thirsty |
| force_basic_auth логическое |
| Принудительно отправлять заголовок Basic аутентификации при первоначальном запросе. Библиотека, используемая модулем uri, отправляет информацию об аутентификации только тогда, когда веб-сервис отвечает на первоначальный запрос статусом 401. Так как некоторые службы basic auth не отправляют 401 корректно, авторизация может не удаться. |
| HEADER_ словарь | Любой параметр, начинающийся с "HEADER_", отправляется в запросе как заголовок. Например, HEADER_Content-Type="application/json" отправит заголовок "Content-Type" вместе с запросом со значением "application/json". Этот параметр устарел начиная с 2.1 и будет удалён в Ansible 2.9. Используйте headers вместо него. | |
| headers словарь добавлено в 2.1 | Добавление пользовательских HTTP-заголовков к запросу в формате YAML-хэша. Начиная с 2.3, предоставление Content-Type здесь переопределит заголовок, сгенерированный при использовании json или form-urlencoded для body_format. | |
| http_agent строка | По умолчанию: "ansible-httpget" | Заголовок для идентификации, обычно отображается в логах веб-сервера. |
| method строка | По умолчанию: "GET" | HTTP-метод запроса или ответа. В более поздних версиях мы больше не ограничиваем метод на уровне модуля, но он по-прежнему должен быть допустимым методом, принимаемым сервисом, обрабатывающим запрос. |
| others - | Все аргументы, принимаемые модулем file, также работают здесь | |
| remote_src логическое добавлено в 2.7 |
| Если no, модуль будет искать src на исходной/главной машине.Если yes, модуль будет использовать путь src на удалённой/целевой машине. |
| removes путь | Имя файла. Если файла не существует, этот шаг не будет выполнен. | |
| return_content логическое |
| Указывает, возвращать ли тело ответа как ключ "content" в результате словаря. Независимо от этого параметра, если отчётный тип Content-type — "application/json", то JSON всегда загружается в ключ json в результатах словаря. |
| src путь добавлено в 2.7 | Путь к файлу, который будет отправлен на удалённый сервер. Не может использоваться с body. | |
| status_code список | По умолчанию: [200] | Список допустимых числовых кодов HTTP-статуса, означающих успешность запроса. |
| timeout целое число | По умолчанию: 30 | Таймаут уровня сокета в секундах |
| unix_socket - добавлено в 2.8 | Путь к сокету Unix доменной области, который нужно использовать для подключения | |
| url строка / обязательно | HTTP или HTTPS URL в формате (http|https)://host.domain[:port]/path | |
| url_password строка | Пароль, используемый модулем для Digest, Basic или WSSE аутентификации. псевдонимы: пароль | |
| url_username строка | Имя пользователя, используемое модулем для Digest, Basic или WSSE аутентификации. псевдонимы: пользователь | |
| use_proxy логическое |
| Если no, не использовать прокси, даже если прокси определён в переменной окружения на целевых хостах. |
| validate_certs логическое |
| Если no, сертификаты SSL не будут проверены.Это следует использовать только на сайтах под собственным контролем, использующих самозаверяемые сертификаты. До версии 1.9.2 код по умолчанию устанавливал no. |
Примечания
Примечание
- Зависимость от httplib2 была удалена в Ansible 2.1.
- Модуль возвращает все HTTP-заголовки в нижнем регистре.
- Для целевых систем Windows используйте модуль win_uri вместо этого.
См. также
См. также
- get_url – Загрузка файлов из HTTP, HTTPS или FTP в узел
- Официальная документация по модулю get_url.
- win_uri – Взаимодействие с веб-сервисами
- Официальная документация по модулю win_uri.
Примеры
- name: Check that you can connect (GET) to a page and it returns a status 200
uri:
url: http://www.example.com
- name: Check that a page returns a status 200 and fail if the word AWESOME is not in the page contents
uri:
url: http://www.example.com
return_content: yes
register: this
failed_when: "'AWESOME' not in this.content"
- name: Create a JIRA issue
uri:
url: https://your.jira.example.com/rest/api/2/issue/
user: your_username
password: your_pass
method: POST
body: "{{ lookup('file','issue.json') }}"
force_basic_auth: yes
status_code: 201
body_format: json
- name: Login to a form based webpage, then use the returned cookie to access the app in later tasks
uri:
url: https://your.form.based.auth.example.com/index.php
method: POST
body_format: form-urlencoded
body:
name: your_username
password: your_password
enter: Sign in
status_code: 302
register: login
- name: Login to a form based webpage using a list of tuples
uri:
url: https://your.form.based.auth.example.com/index.php
method: POST
body_format: form-urlencoded
body:
- [ name, your_username ]
- [ password, your_password ]
- [ enter, Sign in ]
status_code: 302
register: login
- name: Connect to website using a previously stored cookie
uri:
url: https://your.form.based.auth.example.com/dashboard.php
method: GET
return_content: yes
headers:
Cookie: "{{ login.set_cookie }}"
- name: Queue build of a project in Jenkins
uri:
url: http://{{ jenkins.host }}/job/{{ jenkins.job }}/build?token={{ jenkins.token }}
user: "{{ jenkins.user }}"
password: "{{ jenkins.password }}"
method: GET
force_basic_auth: yes
status_code: 201
- name: POST from contents of local file
uri:
url: https://httpbin.org/post
method: POST
src: file.json
- name: POST from contents of remote file
uri:
url: https://httpbin.org/post
method: POST
src: /path/to/my/file.json
remote_src: yes
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие — уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| elapsed целое число | при успехе | Количество секунд, затраченное на загрузку Пример: 23 |
| msg строка | всегда | HTTP-сообщение из запроса Пример: OK (неизвестные байты) |
| redirected логическое значение | при успехе | Было ли перенаправление запроса |
| status целое число | всегда | HTTP-код состояния из запроса Пример: 200 |
| url строка | всегда | Фактический URL, используемый для запроса Пример: https://www.ansible.com/ |
Статус
- Данный модуль гарантированно не будет иметь обратной несовместимости в будущем. [stableinterface]
- Этот модуль поддерживается Командой разработчиков Ansible. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке данного модуля Red Hat можно найти в этой статье базы знаний Red Hat.
Авторы
- Romeo Theriault (@romeotheriault)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/uri_module.html