Определите тип возврата для объекта, возвращенного из задачи

#ansible

Вопрос:

У меня есть плейбук, который должен извлекать артефакты из репозитория maven, извлекать их во временную папку и копировать какой-либо файл в папку назначения. В настоящее время он работает довольно хорошо — артефакты загружаются с помощью задачи maven_artifact. Но некоторые требования изменились, и теперь мне нужно использовать задачу get_url. После изменения на get_url вся остальная часть сборника игр нарушается, потому что объекты, возвращенные из maven_artifact и get_url, имеют разные типы. Как определить, какой тип с какими полями возвращается из задачи?

С уважением

Ответ №1:

Независимо от того, какой модуль ansible вы используете, есть возможность создавать переменные из выходных данных задачи с помощью register .

В доступной для анализа документации указано, какие возвращаемые значения доступны вам при этом. Вот, например, возвращаемые значения для get_url модуля: https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html

В этом случае вы можете сделать что-то вроде следующего, чтобы получить код состояния get_url модуля:

 - name: Download foo.conf
  get_url:
    url: http://example.com/path/file.conf
    dest: /etc/foo.conf
    mode: '0440'
  register: my_result

- name: Print status code of get_url
  debug:
    var: my_result.status_code
 

Ответ №2:

Каждый модуль возвращает объект другого типа. В Ansible невозможно определить тип зарегистрированной переменной (т. Е. Какие атрибуты вы можете прочитать из нее), однако модуль всегда будет возвращать объект одного и того же типа.

Возвращаемые значения модуля перечислены в нижней части страницы документации по этим модулям.