url#

Расширение тестирования ansible.builtin.url проверяет, является ли строка корректным URL.

Описание применения расширений тестирования приведено в документе Тестирование.

Особенности работы#

Для проверки строки используйте конструкцию:

<url> is ansible.builtin.url

Для инверсии результата сравнения добавьте not:

<url> is not ansible.builtin.url

Входные значения#

Расширение принимает единственный входной параметр Input – проверяемая строка.

Выходные значения#

Расширение возвращает значение True или False в зависимости от результата проверки:

  • False – строка не является корректным URL;

  • True – строка является корректным URL.

Параметры#

Расширение принимает единственный параметр schemes – список схем, на соответствие которым проверяется входное значение. Если значение параметра не задано, модуль проверяет строку на совпадение с любой из возможных схем.

Примеры#

Ниже приведены примеры использования расширения ansible.builtin.url в различных сценариях.

Проверка URL на корректность#

Следующий пример демонстрирует использование ansible.builtin.url для простой проверки URL на корректность:

---
# ...
  tasks:
    - name: Validate URL
      ansible.builtin.debug:
        msg: "URL is valid"
      vars:
        download_url: https://example.com/downloads/installer.deb
      when: download_url is ansible.builtin.url

Результаты выполнения задачи:

ok: [node1.example.com] => {
    "msg": "URL is valid"
}

Ограничение на использование схем#

Следующий пример демонстрирует использование ansible.builtin.url для проверки URL с ограничением по схемам:

---
# ...
  tasks:
    - name: Validate URL
      ansible.builtin.debug:
        msg: "{{ item }} is a valid FTP URL: {{ item is ansible.builtin.url(schemes=['ftp', 'sftp']) }}"
      loop:
        - http://ftp.gnu.org/pub/gnu/wget/wget-1.25.0.tar.gz
        - ftp://example.com/pub/file.txt
        - sftp://admin:password@example.com:5432/secret/file.tar.gz

Результаты выполнения задачи:

ok: [node1.example.com] => (item=http://ftp.gnu.org/pub/gnu/wget/wget-1.25.0.tar.gz) => {
    "msg": "http://ftp.gnu.org/pub/gnu/wget/wget-1.25.0.tar.gz is a valid FTP URL: False"
}
ok: [node1.example.com] => (item=ftp://example.com/pub/file.txt) => {
    "msg": "ftp://example.com/pub/file.txt is a valid FTP URL: True"
}
ok: [node1.example.com] => (item=sftp://admin:password@example.com:5432/secret/file.tar.gz) => {
    "msg": "sftp://admin:password@example.com:5432/secret/file.tar.gz is a valid FTP URL: True"
}