Spec-Zone.ru › Ansible 2.9

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
строка
    Варианты:
  • form-urlencoded
  • json
  • сырой ←
Формат сериализации тела. При установке в 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
строка
    Варианты:
  • all
  • no
  • none
  • safe ←
  • urllib2
  • yes
Следует ли модулю 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API