ansible [core 2.14.2]
python version = 3.11.2
jinja version = 3.1.2
У меня есть это в ansible.cfg
[defaults]
roles_path = roles
callback_plugins = plugins/callback
filter_plugins = plugins/filter
interpreter_python = /usr/bin/python3
ansible_managed = Ansible managed. All changes will be lost. Please edit in ansible playbook only.
callbacks_enabled = profile_tasks,profile_roles,timer
timeout = 240
gathering = explicit
gather_subset = min
Я получаю это раздражающее предупреждение
[ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕНИИ]: параметр DEFAULT_GATHER_SUBSET, ключевое слово module_defaults является более общей версией и может применяться ко всем вызовам действий M(ansible.builtin.gather_facts) или M(ansible.builtin.setup), используйте вместо этого module_defaults. Эта функция будет удалена из ansible-core в версии 2.18. Предупреждения об устаревании можно отключить, установив deprecation_warnings=False в файле ansible.cfg.
Я не хочу отключать звук устаревания (используя deprecation_warnings=False), но я хочу правильно исправить это предупреждение.
Как мне это сделать?
P.S. Мне нужно использовать этот параметр в ansible.cfg, а не напрямую в плейбуках.
В версии 2.18 и более поздних вы не сможете настроить DEFAULT_GATHER_SUBSET . Начиная с версии 2.18 вам придется использовать ключевое слово module_defaults для настройки значения по умолчанию collect_subset модуля setup.
Вместо настройки DEFAULT_GATHER_SUBSET в ansible.cfg
gather_subset = min
Вам нужно будет объявить ключевое слово module_defaults, например, на уровне игры
- hosts: localhost
module_defaults:
ansible.builtin.setup:
gather_subset: min
Спасибо за ваш ответ! Могу ли я использовать этот конфиг в ansible.cfg? Я не хочу менять свои плейбуки ( Только в одном месте
Нет, вы не можете использовать ключевые слова в конфигурации, и это становится еще хуже. Ключи (названия модулей) должны быть статическими!. Это означает, что вы не можете создать словарь, например, в group_vars/all и использовать его. Вы должны явно объявлять module_defaults при каждом воспроизведении! (Если вы хотите использовать его). Единственным обходным путем, кажется, является какая-то динамическая пьеса из шаблона.
См. Централизованное определение избыточных параметров задач и их повторное использование в разных задачах.
В соответствии с вашими требованиями «Я не хочу отключать устаревание», «Мне нужно использовать этот параметр в ansible.cfg» и «Я хочу правильно исправить это предупреждение», это, вероятно, оставит вас с изменением кода Ansible напрямую. Возможно в display.py. Обратите внимание, что это только подавит конкретное предупреждающее сообщение об устаревании, основная причина и причина не будут устранены, и проблема станет больше, но только позже. Поэтому рекомендуется обратиться к ней как можно раньше.