uri – Взаимодействие с веб-сервисами
Обзор
- Взаимодействует с веб-сервисами HTTP и HTTPS и поддерживает механизмы аутентификации HTTP Digest, Basic и WSSE.
- Для целей Windows используйте модуль win_uri.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка | Атрибуты, которые должны иметь результирующий файл или каталог. Для получения поддерживаемых флагов обратитесь к странице руководства для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и отображается lsattr. Оператор = предполагается по умолчанию, в противном случае операторы + или - необходимо включить в строку.псевдонимы: attr | |
| body сырой | Тело http запроса/ответа веб-сервису. Если body_format установлено в 'json', оно будет принимать уже отформатированную строку JSON или преобразовывать структуру данных в JSON. Если body_format установлено в 'form-urlencoded', оно будет преобразовывать словарь или список кортежей в строку 'application/x-www-form-urlencoded'. (Добавлено в v2.7) | |
| body_format строка |
| Формат сериализации тела. При установке в 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 устарел и будет удален в версии 2.13.псевдонимы: thirsty |
| force_basic_auth логическое |
| Вынудить отправку заголовка Basic аутентификации при первом запросе. Библиотека, используемая модулем uri, отправляет информацию об аутентификации только тогда, когда веб-сервис отвечает на начальный запрос с кодом 401. Поскольку некоторые службы basic auth не отправляют 401 должным образом, вход в систему будет неудачным. |
| group строка | Имя группы, которая должна владеть файлом/каталогом, как передается в chown. | |
| headers словарь | Добавить пользовательские HTTP-заголовки к запросу в формате YAML-хеша. С версии 2.3 предоставление Content-Type здесь переопределит заголовок, сгенерированный предоставлением json или form-urlencoded для body_format. | |
| http_agent строка | Значение по умолчанию: "ansible-httpget" | Заголовок для идентификации, обычно отображается в логах веб-сервера. |
| method строка | Значение по умолчанию: "GET" | HTTP-метод запроса или ответа. В более поздних версиях мы больше не ограничиваем метод на уровне модуля, но он все равно должен быть допустимым методом, принятым сервисом, обрабатывающим запрос. |
| mode строка | Разрешения, которые должен иметь результирующий файл или каталог. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую нуль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777) либо заключить его в кавычки (например, '644' или '1777') , чтобы Ansible получил строку и мог выполнить собственное преобразование из строки в число.Передача Ansible числа без соблюдения одного из этих правил приведет к десятичному числу, что приведет к непредсказуемым результатам. С версии Ansible 1.8 режим может быть задан в виде символьного режима (например, u+rwx или u=rw,g=r,o=r). | |
| owner строка | Имя пользователя, который должен владеть файлом/каталогом, как передается в chown. | |
| remote_src логическое добавлено в 2.7 |
| Если no, модуль будет искать src на исходной/главной машине.Если yes, модуль будет использовать путь src на удаленной/целевой машине. |
| removes путь | Имя файла. Если файл не существует, этот шаг не выполняется. | |
| return_content логическое |
| Возвращать ли тело ответа в качестве ключа "content" в результирующем словаре. Независимо от этой опции, если отчётный тип содержимого "application/json", то JSON всегда загружается в ключ, названный json в результатах словаря. |
| selevel строка | Значение по умолчанию: "s0" | Часть уровня SELinux контекста файла. Это атрибут MLS/MCS, иногда известный как range.При установке в _default, будет использоваться часть политики level при её наличии. |
| serole строка | Часть роли SELinux контекста файла. При установке в _default, будет использоваться часть политики role при её наличии. | |
| setype строка | Часть типа SELinux контекста файла. При установке в _default, будет использоваться часть политики type при её наличии. | |
| seuser строка | Часть пользователя SELinux контекста файла. По умолчанию используется политика system, где это применимо.При установке в _default, будет использоваться часть политики user при её наличии. | |
| src путь добавлено в 2.7 | Путь к файлу, который должен быть передан на удалённый сервер. Не может быть использован вместе с body. | |
| status_code список | Значение по умолчанию: [200] | Список допустимых числовых кодов состояния HTTP, которые означают успешность запроса. |
| timeout целое число | Значение по умолчанию: 30 | Таймаут уровня сокета в секундах |
| unix_socket - добавлен в 2.8 | Путь к сокету доменной Unix для подключения | |
| unsafe_writes логическое значение |
| Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто имеют сбои, которые препятствуют этому. Одним примером являются файлы, смонтированные с помощью Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible переходить к небезопасным методам обновления файлов при сбое атомарных операций (однако, он не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. |
| url строка / обязательно | URL HTTP или HTTPS в формате (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
- name: Pause play until a URL is reachable from this host
uri:
url: "http://192.0.2.1/some/test"
follow_redirects: none
method: GET
register: _result
until: _result.status == 200
retries: 720 # 720 * 5 seconds = 1hour (60*60/5)
delay: 5 # Every 5 seconds
# There are issues in a supporting Python library that is discussed in
# https://github.com/ansible/ansible/issues/52705 where a proxy is defined
# but you want to bypass proxy use on CIDR masks by using no_proxy
- name: Work around a python issue that doesn't support no_proxy envvar
uri:
follow_redirects: none
validate_certs: false
timeout: 5
url: "http://{{ ip_address }}:{{ port | default(80) }}"
register: uri_data
failed_when: false
changed_when: false
vars:
ip_address: 192.0.2.1
environment: |
{
{% for no_proxy in (lookup('env', 'no_proxy') | regex_replace('\s*,\s*', ' ') ).split() %}
{% if no_proxy | regex_search('\/') and
no_proxy | ipaddr('net') != '' and
no_proxy | ipaddr('net') != false and
ip_address | ipaddr(no_proxy) is not none and
ip_address | ipaddr(no_proxy) != false %}
'no_proxy': '{{ ip_address }}'
{% elif no_proxy | regex_search(':') != '' and
no_proxy | regex_search(':') != false and
no_proxy == ip_address + ':' + (port | default(80)) %}
'no_proxy': '{{ ip_address }}:{{ port | default(80) }}'
{% elif no_proxy | ipaddr('host') != '' and
no_proxy | ipaddr('host') != false and
no_proxy == ip_address %}
'no_proxy': '{{ ip_address }}'
{% elif no_proxy | regex_search('^(\*|)\.') != '' and
no_proxy | regex_search('^(\*|)\.') != false and
no_proxy | regex_replace('\*', '') in ip_address %}
'no_proxy': '{{ ip_address }}'
{% endif %}
{% endfor %}
}
Значения возврата
Общие значения возврата документированы здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| 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.9/modules/uri_module.html