Spec-Zone.ru › Ansible

Ansible Справочник: Модульные Утилиты

Эта страница документирует утилиты, предназначенные для помощи при написании модулей Ansible на Python.

AnsibleModule

Для использования этой функциональности, включите from ansible.module_utils.basic import AnsibleModule в свой модуль.

classansible.module_utils.basic.AnsibleModule(argument_spec, bypass_checks=False, no_log=False, mutually_exclusive=None, required_together=None, required_one_of=None, add_file_common_args=False, supports_check_mode=False, required_if=None, required_by=None)

Общий код для быстрого создания модуля ansible на Python (хотя вы можете писать модули с любым кодом, который может вернуть JSON).

См. Разработка модулей для общего введения и Архитектура модулей Ansible для более подробного объяснения.

add_path_info(kwargs)

для результатов, являющихся файлами, дополняет информацию о пути к файлу статистикой о пути к файлу.

atomic_move(src, dest, unsafe_writes=False, keep_dest_attrs=True)

Атомарное перемещение src в dest, копирование атрибутов из dest, возвращает true при успехе. Использует os.rename для обеспечения атомарности операции, остальная часть функции предназначена для работы с ограничениями, особыми случаями и гарантирует сохранение контекста selinux, если это возможно.

backup_local(fn)

Создаёт резервную копию указанного файла с пометкой даты, возвращает True или False при успехе или неудаче.

boolean(arg)

Преобразует аргумент в булево значение.

digest_from_file(filename, algorithm)

Возвращает шестнадцатеричный дайджест локального файла для указанного методом дайджеста, или None, если файл отсутствует.

exit_json(**kwargs)

Возвращает результат модуля без ошибок.

fail_json(msg, **kwargs)

Возвращает результат модуля с сообщением об ошибке.

find_mount_point(path)

Принимает путь и возвращает его точку монтирования.

Параметры:

path – строковый тип с путём к файловой системе.

Возвращает:

путь к точке монтирования в текстовом формате.

get_bin_path(arg, required=False, opt_dirs=None)

Находит системный исполняемый файл в переменной среды PATH.

Параметры:
  • arg – Исполняемый файл для поиска.
  • required – если исполняемый файл не найден и required True, fail_json
  • opt_dirs – необязательный список каталогов для поиска в дополнение к PATH
Возвращает:

если найден, возвращает полный путь; в противном случае возвращает None.

is_executable(path)

Является ли данный путь исполняемым?

Параметры:

path – путь к файлу для проверки.

Ограничения:

  • Не учитывает FSACL.
  • В большинстве случаев нам действительно нужно знать «Может ли текущий пользователь запустить этот файл». Эта функция не сообщает нам об этом, а только если установлен любой исполняемый бит.
is_special_selinux_path(path)

Возвращает кортеж, содержащий (True, selinux_context), если данный путь находится в точке монтирования NFS или другой «специальной» файловой системы, в противном случае возвращаемое значение будет (False, None).

load_file_common_arguments(params, path=None)

Многие модули работают с файлами, эта оболочка содержит общие параметры, которые принимает модуль file, таким образом, они доступны напрямую всем модулям, и они могут совместно использовать код.

Позволяет перезаписать аргумент модуля path/dest, указав путь.

md5(filename)

Возвращает шестнадцатеричный дайджест MD5 локального файла, используя digest_from_file().

Не используйте эту функцию, если у вас нет другого выбора для:
  1. Необязательная обратная совместимость
  2. Совместимость с третьей стороной протоколом

Эта функция не будет работать на системах, которые соответствуют FIPS-140-2.

Большинство случаев использования этой функции могут использовать функцию модуля.sha1 вместо неё.

preserved_copy(src, dest)

Копирует файл с сохранённой собственностью, правами и контекстом.

END_OF_DOCUMENT_MARKER
run_command(args, check_rc=False, close_fds=True, executable=None, data=None, binary_data=False, path_prefix=None, cwd=None, use_unsafe_shell=False, prompt_regex=None, environ_update=None, umask=None, encoding='utf-8', errors='surrogate_or_strict', expand_user_and_vars=True, pass_fds=None, before_communicate_callback=None, ignore_invalid_cwd=True, handle_exceptions=True)

Выполнить команду, возвращает код возврата, стандартный вывод и стандартную ошибку.

Механизм этого метода для чтения стандартного вывода и стандартной ошибки отличается от механизма CPython subprocess.Popen.communicate, так как этот метод прекращает чтение, как только запущенная команда завершила выполнение и стандартный вывод и стандартная ошибка были обработаны, в отличие от ожидания, пока стандартный вывод/стандартная ошибка не закроются. Это может быть важным отличием, когда учитывается, что форкированный или запущенный в фоновом режиме процесс может удерживать стандартный вывод или стандартную ошибку открытыми дольше, чем запущенная команда.

Параметры:

args – команда для выполнения * Если args является списком, команда будет выполнена с shell=False. * Если args является строкой и use_unsafe_shell=False, args будет разделен на список и выполняется с shell=False * Если args является строкой и use_unsafe_shell=True, выполняется с shell=True.

Параметр check_rc:

Вызывать fail_json в случае ненулевого кода возврата. По умолчанию False

Параметр close_fds:

См. документацию для subprocess.Popen(). По умолчанию True

Параметр executable:

См. документацию для subprocess.Popen(). По умолчанию None

Параметр data:

Если задано, информация для записи в стандартный ввод команды

Параметр binary_data:

Если False, добавить новую строку в данные. По умолчанию False

Параметр path_prefix:

Если задано, дополнительный путь для поиска команды. Это добавляется к переменной окружения PATH, чтобы вспомогательные команды в той же директории также могли быть найдены

Параметр cwd:

Если задано, рабочая директория для выполнения команды

Параметр use_unsafe_shell:

См. args параметр. По умолчанию False

Параметр prompt_regex:

Строка регулярного выражения (не скомпилированное регулярное выражение), которая может использоваться для обнаружения запросов в стандартном выводе, которые в противном случае могут привести к зависанию выполнения (особенно если не указаны данные ввода)

Параметр environ_update:

Словарь для обновления переменных окружения

Параметр umask:

Umask для использования при выполнении команды. По умолчанию None

Параметр encoding:

Поскольку мы возвращаем строки, на Python 3 нам нужно знать кодировку для преобразования из байтов в текст. Если вы хотите всегда получать байты, используйте encoding=None. По умолчанию “utf-8”. Это не влияет на преобразование строк, указанных в args.

Параметр errors:

Поскольку мы возвращаем строки, на Python 3 нам нужно преобразовать стандартный вывод и стандартную ошибку из байтов в текст. Если байты не могут быть декодированы в указанной encoding кодировке, используйте этот обработчик ошибок для обработки их. По умолчанию surrogate_or_strict, что означает, что байты будут декодированы с помощью обработчика ошибок surrogateescape, если он доступен (доступен во всех поддерживаемых версиях Python 3), иначе будет поднята ошибка UnicodeError. Это не влияет на преобразования строк, указанных в args.

Параметр expand_user_and_vars:

Когда use_unsafe_shell=False этот параметр определяет, расширяются ли ~ в путях и переменных среды перед выполнением команды. Когда True строка, такая как $SHELL, будет расширена независимо от экранирования. Когда False и use_unsafe_shell=False расширение путей и переменных не будет выполнено.

Параметр pass_fds:

При работе с Python 3 этот параметр определяет, какие дескрипторы файлов должны быть переданы подлежащему Popen конструктору. В Python 2 этот параметр установит close_fds в False.

Параметр before_communicate_callback:

Эта функция будет вызвана после создания Popen объекта, но перед обменом данными с процессом. (Popen объект будет передан в обратный вызов в качестве первого аргумента)

Параметр ignore_invalid_cwd:

Этот флаг указывает, нужно ли игнорировать недопустимый cwd (не существующий или не директория) или нужно ли вызывать исключение.

Параметр handle_exceptions:

Этот флаг указывает, нужно ли обрабатывать исключения в строке и вызывать failed_json, или вызывающий код должен обрабатывать их.

Возвращаемое значение:

Кортеж из 3 элементов: код возврата (целое число), стандартный вывод (строка), стандартная ошибка (строка). В Python 2 стандартный вывод и стандартная ошибка — байтовые строки. В Python 3 стандартный вывод и стандартная ошибка — строковые значения, преобразованные в соответствии с параметрами encoding и errors. Если вы хотите получить байтовые строки в Python 3, используйте encoding=None, чтобы отключить декодирование в текст.

sha1(filename)

Возвращает шестнадцатеричное значение дайджеста SHA1 локального файла, используя digest_from_file().

sha256(filename)

Возвращает шестнадцатеричное значение дайджеста SHA-256 локального файла, используя digest_from_file().

Основные

Чтобы использовать эту функциональность, включите import ansible.module_utils.basic в свой модуль.

ansible.module_utils.basic.get_all_subclasses(cls)

Устарело: Используйте ansible.module_utils.common._utils.get_all_subclasses вместо этого.

ansible.module_utils.basic.get_platform()

Устарело. Используйте platform.system() напрямую.

Возвращаемое значение:

Имя платформы, на которой выполняется модуль, в строковом формате.

Возвращает строку, обозначающую платформу (“Linux”, “Solaris” и т.д.). В настоящее время это результат вызова platform.system().

ansible.module_utils.basic.heuristic_log_sanitize(data, no_log_values=None)

Удаляет строки, похожие на пароли, из сообщений журнала.

ansible.module_utils.basic.load_platform_subclass(cls, *args, **kwargs)

Устарело: Используйте ansible.module_utils.common.sys_info.get_platform_subclass вместо этого.

Спецификация аргументов

Классы и функции для проверки параметров по спецификации аргументов.

ArgumentSpecValidator

class ansible.module_utils.common.arg_spec.ArgumentSpecValidator(argument_spec, mutually_exclusive=None, required_together=None, required_one_of=None, required_if=None, required_by=None)

Класс валидации спецификации аргументов

Создаёт валидатор на основе argument_spec, который можно использовать для проверки множества параметров с помощью метода validate().

Параметры:
  • argument_spec (dict[str, dict]) – Спецификация допустимых параметров и их типов. Может включать вложенные спецификации аргументов.
  • mutually_exclusive (list[str] or list[list[str]]) – Список или список списков терминов, которые не должны предоставляться вместе.
  • required_together (list[list[str]]) – Список списков терминов, которые должны быть указаны вместе.
  • required_one_of (list[list[str]]) – Список списков терминов, по одному из которых в каждом списке обязателен.
  • required_if (list) – Список списков [parameter, value, [parameters]], где один из [parameters] обязателен, если parameter == value.
  • required_by (dict[str, list[str]]) – Словарь имён параметров, содержащий список параметров, необходимых для каждого ключа в словаре.
validate(parameters, *args, **kwargs)

Проверка parameters по спецификации аргументов.

Сообщения об ошибках в ValidationResult могут содержать значения no_log и должны быть очищены с помощью sanitize_keys() перед протоколированием или отображением.

Параметры:

parameters (dict[str, dict]) – Параметры для проверки по спецификации аргументов

Возвращает:

ValidationResult, содержащий проверенные параметры.

Пример:
argument_spec = {
    'name': {'type': 'str'},
    'age': {'type': 'int'},
}

parameters = {
    'name': 'bo',
    'age': '42',
}

validator = ArgumentSpecValidator(argument_spec)
result = validator.validate(parameters)

if result.error_messages:
    sys.exit("Validation failed: {0}".format(", ".join(result.error_messages))

valid_params = result.validated_parameters

ValidationResult

class ansible.module_utils.common.arg_spec.ValidationResult(parameters)

Результат валидации спецификации аргументов.

Это объект, возвращаемый ArgumentSpecValidator.validate(), содержащий проверенные параметры и любые ошибки.

Параметры:

parameters (dict) – Термины для проверки и приведения к правильному типу.

errors

AnsibleValidationErrorMultiple, содержащий все объекты AnsibleValidationError, если во время проверки произошли какие-либо сбои.

property validated_parameters

Проверенные и приведенные к типу параметры.

property unsupported_parameters

set недопустимых имён параметров.

property error_messages

list всех сообщений об ошибках из каждого исключения в errors.

Параметры

ansible.module_utils.common.parameters.DEFAULT_TYPE_VALIDATORS

dict имён типов, таких как 'str', и по умолчанию функции проверки типа, check_type_str() в данном случае.

ansible.module_utils.common.parameters.env_fallback(*args, **kwargs)

Загрузка значения из переменной окружения

ansible.module_utils.common.parameters.remove_values(value, no_log_strings)

Удаление строк в no_log_strings из значения.

Если значение является контейнерным типом, то удаляется намного больше.

Использование deferred_removals существует вместо чисто рекурсивного решения, из-за потенциальной ошибки превышения максимальной глубины рекурсии при работе с большими данными (см. вопрос #24560).

ansible.module_utils.common.parameters.sanitize_keys(obj, no_log_strings, ignore_keys=frozenset({}))

Очистка ключей в контейнерном объекте путём удаления no_log значений из имён ключей.

Эта функция дополняет функцию remove_values(). Подобно этой функции, мы используем deferred_removals чтобы избежать превышения максимальной глубины рекурсии в случаях с большими структурами данных.

Параметры:
  • obj – Контейнерный объект для очистки. Неконтейнерные объекты возвращаются без изменений.
  • no_log_strings – Набор строковых значений, которые не должны регистрироваться.
  • ignore_keys – Набор строковых значений ключей, которые не следует очищать.
Возвращает:

Объект с очищенными ключами.

Проверка

Функции для проверки различных типов параметров.

ansible.module_utils.common.validation.check_missing_parameters(parameters, required_parameters=None)

Используется для проверки обязательных параметров, когда проверка через argspec недоступна, так как требуется больше информации, чем просто argspec.

Вызывает TypeError, если отсутствуют какие-либо обязательные параметры

Параметры:
  • parameters – Словарь параметров
  • required_parameters – Список параметров для поиска в заданных параметрах.
Возвращает:

Пустой список или вызывает TypeError, если проверка не удалась.

ansible.module_utils.common.validation.check_mutually_exclusive(terms, parameters, options_context=None)

Проверка взаимоисключающих параметров по параметрам аргумента

Принимает один список или список списков, которые представляют группы взаимоисключающих параметров

Параметры:
  • terms – Список взаимоисключающих параметров
  • parameters – Словарь параметров
  • options_context – Список строк с именами родительских ключей, если terms находятся в подспецификации.
Возвращает:

Пустой список или вызывает TypeError, если проверка не удалась.

ansible.module_utils.common.validation.check_required_arguments(argument_spec, parameters, options_context=None)

Проверка всех параметров в argument_spec и возвращение списка параметров, которые являются обязательными, но отсутствуют в параметрах.

Вызывает TypeError, если проверка не удалась

Параметры:
  • argument_spec – Словарь argument_spec, содержащий все параметры и их спецификацию
  • parameters – Словарь параметров
  • options_context – Список строк с именами родительских ключей, если argument_spec находятся в подспецификации.
Возвращает:

Пустой список или вызывает TypeError, если проверка не удалась.

ansible.module_utils.common.validation.check_required_by(requirements, parameters, options_context=None)

Для каждого ключа в требованиях проверяется соответствующий список, чтобы убедиться, что они существуют в параметрах.

Принимает одну строку или список значений для каждого ключа.

Параметры:
  • requirements – Словарь требований
  • parameters – Словарь параметров
  • options_context – Список строк с именами родительских ключей, если requirements находятся в подспецификации.
Возвращает:

Пустой словарь или вызывает TypeError, если

ansible.module_utils.common.validation.check_required_if(requirements, parameters, options_context=None)

Проверка параметров, которые являются условными обязательными

Вызывает TypeError, если проверка не удалась

Параметры:

requirements – Список списков, определяющих параметр, значение, параметры, необходимые, когда данный параметр имеет указанное значение, и необязательно булево значение, указывающее, требуется любой или все параметры.

Пример:
required_if=[
    ['state', 'present', ('path',), True],
    ['someint', 99, ('bool_param', 'string_param')],
]
Параметры:
  • parameters – Словарь параметров
  • options_context – Список строк с именами родительских ключей, если requirements находятся в подспецификации.
Возвращает:

Пустой список или вызывает TypeError, если проверка не удалась. Атрибут results исключения содержит список словарей. Каждый словарь — результат оценки каждого элемента в требованиях. Каждый возвращаемый словарь содержит следующие ключи:

key missing:

Список параметров, которые необходимы, но отсутствуют

key requires:

’any’ или ‘all’

key parameter:

Имя параметра, у которого есть требование

key value:

Исходное значение параметра

key requirements:

Исходные необходимые параметры

Пример:
[
    {
        'parameter': 'someint',
        'value': 99
        'requirements': ('bool_param', 'string_param'),
        'missing': ['string_param'],
        'requires': 'all',
    }
]
ansible.module_utils.common.validation.check_required_one_of(terms, parameters, options_context=None)

Проверяет каждый список терминов, чтобы убедиться, что хотя бы один из них существует в заданных параметрах модуля

Принимает список списков или кортежей

Параметры:
  • terms – Список списков терминов для проверки. Для каждого списка терминов требуется хотя бы один.
  • parameters – Словарь параметров
  • options_context – Список строк с именами родительских ключей, если terms находятся в подспецификации.
Возвращает:

Пустой список или вызывает TypeError, если проверка не удалась.

ansible.module_utils.common.validation.check_required_together(terms, parameters, options_context=None)

Проверяет каждый список терминов, чтобы убедиться, что каждый параметр в каждом списке существует в заданных параметрах.

Принимает список списков или кортежей.

Параметры:
  • terms – Список списков терминов для проверки. Каждый список должен включать параметры, которые все требуются, когда по крайней мере один указан в параметрах.
  • parameters – Словарь параметров
  • options_context – Список строк с именами родительских ключей, если terms находятся в подспецификации.
Возвращает:

Пустой список или вызывает TypeError, если проверка не удалась.

ansible.module_utils.common.validation.check_type_bits(value)

Преобразует значение в виде человекочитаемых битов в целые биты.

Пример: check_type_bits('1Mb') возвращает целое число 1048576.

Вызывает TypeError, если невозможно выполнить преобразование.

ansible.module_utils.common.validation.check_type_bool(value)

Проверка, что значение является булевым, или преобразование его в булевое и возвращение его.

Вызывает TypeError, если преобразование в булевое невозможно

Параметры:

value – Строка, целое число или число с плавающей точкой для преобразования в булевое. Допустимые булевы значения: ‘1’, ‘on’, 1, ‘0’, 0, ‘n’, ‘f’, ‘false’, ‘true’, ‘y’, ‘t’, ‘yes’, ‘no’, ‘off’

Возвращает:

Булевое значение True или False

ansible.module_utils.common.validation.check_type_bytes(value)

Преобразование человекочитаемого строкового значения в байты

Вызывает TypeError, если преобразование значения невозможно

ansible.module_utils.common.validation.check_type_dict(value)

Проверка, что значение является словарем, или преобразование его в словарь и возврат.

Вызывает TypeError, если преобразование в словарь невозможно.

Параметры:

значение – Словарь или строка для преобразования в словарь. Принимает k1=v2, k2=v2.

Возвращает:

значение, преобразованное в словарь

ansible.module_utils.common.validation.check_type_float(value)

Проверка, что значение является числом с плавающей точкой, или преобразование его в число с плавающей точкой и возврат.

Вызывает TypeError, если преобразование в число с плавающей точкой невозможно.

Параметры:

значение – число с плавающей точкой, целое число, строка или байты для проверки или преобразования и возврата.

Возвращает:

число с плавающей точкой заданного значения.

ansible.module_utils.common.validation.check_type_int(value)

Проверка, что значение является целым числом, и возврат его или преобразование значения в целое число и возврат.

Вызывает TypeError, если преобразование в целое число невозможно.

Параметры:

значение – Строка или целое число для преобразования или проверки

Возвращает:

целое число заданного значения.

ansible.module_utils.common.validation.check_type_jsonarg(value)

Возвращает закодированную в формате JSON строку. Иногда контроллер преобразует строку JSON в словарь/список, поэтому здесь она преобразуется обратно в JSON.

Вызывает TypeError, если преобразование значения невозможно.

ansible.module_utils.common.validation.check_type_list(value)

Проверка, что значение является списком, или преобразование в список.

Строка, разделенная запятыми, будет разделена на список. Вызывает TypeError, если преобразование в список невозможно.

Параметры:

значение – значение для проверки или преобразования в список

Возвращает:

Исходное значение, если это уже список, список из одного элемента, если число с плавающей точкой, целое число или строка без запятых, или список из нескольких элементов, если строка, разделенная запятыми.

ansible.module_utils.common.validation.check_type_path(value)

Проверяет, что предоставленное значение является строкой, или преобразует его в строку, затем возвращает расширенный путь.

ansible.module_utils.common.validation.check_type_raw(value)

Возвращает исходное значение.

ansible.module_utils.common.validation.check_type_str(value, allow_conversion=True, param=None, prefix='')

Проверка, что значение является строкой, или преобразование в строку.

Поскольку неожиданные изменения могут иногда происходить при преобразовании в строку, allow_conversion управляет тем, будет ли значение преобразовано или будет поднята ошибка TypeError, если значение не является строкой и должно быть преобразовано.

Параметры:
  • значение – значение для проверки или преобразования в строку
  • разрешить_преобразование – следует ли преобразовывать строку и возвращать её или поднимать TypeError
Возвращает:

Исходное значение, если это строка, значение, преобразованное в строку, если allow_conversion=True, или поднимает TypeError, если allow_conversion=False.

ansible.module_utils.common.validation.count_terms(terms, parameters)

Подсчет числа вхождений ключа в заданном словаре.

Параметры:
  • термины – Строка или итерируемый объект значений для проверки
  • параметры – Словарь параметров
Возвращает:

Целое число, представляющее количество вхождений значений терминов в предоставленном словаре.

Ошибки

exception ansible.module_utils.errors.AnsibleFallbackNotFound

Не найден валидатор по умолчанию

exception ansible.module_utils.errors.AnsibleValidationError(message)

Ошибка валидации спецификации одного аргумента

error_message

Сообщение об ошибке, переданное при возникновении исключения.

property msg

Сообщение об ошибке, переданное при возникновении исключения.

exception ansible.module_utils.errors.AnsibleValidationErrorMultiple(errors=None)

Ошибки валидации спецификации нескольких аргументов

errors

list объектов AnsibleValidationError

property msg

Первое сообщение из первой ошибки в errors.

property messages

list сообщений об ошибках в errors.

append(error)

Добавить новую ошибку в self.errors.

Должны добавляться только объекты AnsibleValidationError.

extend(errors)

Добавить каждый элемент из errors в self.errors . Должны добавляться только объекты AnsibleValidationError.

exception ansible.module_utils.errors.AliasError(message)

Обработка ошибок алиасов

exception ansible.module_utils.errors.ArgumentTypeError(message)

Ошибка с типом параметра

exception ansible.module_utils.errors.ArgumentValueError(message)

Ошибка со значением параметра

exception ansible.module_utils.errors.DeprecationError(message)

Ошибка при обработке устаревших параметров

exception ansible.module_utils.errors.ElementError(message)

Ошибка при валидации элементов

exception ansible.module_utils.errors.MutuallyExclusiveError(message)

Были переданы взаимоисключающие параметры

exception ansible.module_utils.errors.NoLogError(message)

Ошибка преобразования значений no_log

exception ansible.module_utils.errors.RequiredByError(message)

Ошибка с параметрами, которые требуются другими параметрами

exception ansible.module_utils.errors.RequiredDefaultError(message)

Обязательному параметру было присвоено значение по умолчанию

exception ansible.module_utils.errors.RequiredError(message)

Не хватает обязательного параметра

exception ansible.module_utils.errors.RequiredIfError(message)

Ошибка с условными обязательными параметрами

exception ansible.module_utils.errors.RequiredOneOfError(message)

Ошибка с параметрами, где как минимум один обязателен

exception ansible.module_utils.errors.RequiredTogetherError(message)

Ошибка с параметрами, которые требуются вместе

exception ansible.module_utils.errors.SubParameterTypeError(message)

Неверный тип подпараметра

exception ansible.module_utils.errors.UnsupportedError(message)

Были переданы недопустимые параметры

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/reference_appendices/module_utils.html

Spec-Zone.ru

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