Было бы идеально, если бы хэш _wazuh_manager_config_ был либо реструктурирован, либо код был изменен, чтобы облегчить переопределение небольших фрагментов настроек:
wazuh_manager_config:
active_responses:
- command: host-deny
level: 6
location: local
timeout: 600
- command: restart-ossec
location: local
rules_id: '100002'
- command: win_restart-ossec
location: local
rules_id: '100003'
alerts_log: 'yes'
api:
basic_auth: 'yes'
behind_proxy_server: 'no'
bind_addr: 0.0.0.0
ciphers: ''
drop_privileges: 'true'
experimental_features: 'false'
honor_cipher_order: 'true'
https: 'no'
https_ca: ''
https_cert: /var/ossec/etc/sslmanager.cert
https_key: /var/ossec/etc/sslmanager.key
https_use_ca: 'no'
port: 55000
secure_protocol: TLSv1_2_method
use_only_authd: 'false'
authd:
enable: true
force_insert: 'yes'
force_time: 0
port: 1515
purge: 'no'
ssl_agent_ca: null
ssl_auto_negotiate: 'no'
ssl_manager_cert: /var/ossec/etc/sslmanager.cert
ssl_manager_key: /var/ossec/etc/sslmanager.key
ssl_verify_host: 'no'
use_password: 'no'
use_source_ip: 'yes'
...etc. etc. etc.
Причина в том, что нелегко переопределить отдельные части этой конфигурации (например, настройки кластера). Это все или ничего.
Другими словами, если я хочу, чтобы _большая часть_ этих переменных была определена в _group_vars/wazuh_managers.yml_ и переопределяла пару настроек, используя что-то вроде _host_vars/manager01.yml_, это нелегко сделать без изменения задач.
В настоящее время каждая из моих переменных хоста имеет полную копию этого хэша в своем файле переменных хоста с одним или двумя измененными параметрами. Не кажется СУХИМ. Было бы неплохо, если бы большинство общих настроек находились в файле групповых переменных, а одна или две настройки, характерные для хоста, находились в файле переменных хоста.
Возможно, есть способ использовать фильтр combine
, чтобы упростить переопределение частей более крупной конфигурации:
например
{{ {'a':{'foo':1, 'bar':2}, 'b':2} | combine({'a':{'bar':3, 'baz':4}}, recursive=True) }}
Выход:
{'a':{'foo':1, 'bar':3, 'baz':4}, 'b':2}
(Источник: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#combining-hashes-dictionaries)
Привет @paulcalabro ,
Это действительно хорошая идея.
Это изменение является деликатным и требует предыдущего подхода, чтобы иметь возможность разделить конфигурации в основной с общими записями, а затем в одной или нескольких с более настраиваемыми записями.
Тесты для этого изменения будут начаты как можно скорее.
Большое спасибо за ваше сотрудничество, такие вклады очень ценятся.
С наилучшими пожеланиями,
Альфонсо Руис-Браво
@SitoRBJ Спасибо за отзыв, и я полностью согласен, тестирование необходимо. Кстати говоря, вы, ребята, используете Test Kitchen или что-то подобное для тестирования? Вам, ребята, было бы интересно, если бы были какие-то тестовые вклады?
например, некоторые базовые тесты с использованием InSpec
https://www.dropbox.com/s/5zx9fb5ezc1wgj9/Screenshot%202018-12-12%2003.32.44.png?dl=0
Информация о тестовой кухне:
https://kitchen.ci
Привет @paulcalabro ,
Мы пока не используем Test Kitchen для Ansible. Пожалуйста, любой вклад приветствуется. Если вы хотите протестировать, они более чем приветствуются.
Большое спасибо за ваш интерес и за вашу помощь, это очень полезно для нас.
С уважением,
Альфонсо Руис-Браво
Мои два цента:
Первоначально конфигурация в ее нынешнем виде выглядит немного пугающе TBH, требуя от пользователя прочтения целой кучи строк и, возможно, прохождения шаблона конфигурации агента, чтобы понять, что происходит на самом деле.
Мне было интересно, может ли сведение файла конфигурации быть возможным решением - по крайней мере, краткосрочным? Например, почему repo
меньше wazuh_agent_config
? Почему repo
не может быть на верхнем уровне? Разве такой подход не упростит ситуацию?
ИМО, как правило, отмена глубокой вложенности, разделение файла конфигурации на разделы (не обязательно создание нескольких файлов, поскольку это может привести к дополнительным когнитивным издержкам при запоминании того, что определено для каждого файла), и добавление комментариев к разделу и/или конкретному параметру конфигурации может сделать файл конфигурации более интуитивно понятным в целом.
Любые идеи относительно следующих шагов?
Спасибо.
Всем привет. Я отправил на рассмотрение запрос на вытягивание с предложением, которое предлагает что-то похожее на то, что предложил OP, сохраняя при этом совместимость с уже установленными способами работы роли.
Любая обратная связь приветствуется, спасибо!
Самый полезный комментарий
Мои два цента:
Первоначально конфигурация в ее нынешнем виде выглядит немного пугающе TBH, требуя от пользователя прочтения целой кучи строк и, возможно, прохождения шаблона конфигурации агента, чтобы понять, что происходит на самом деле.
Мне было интересно, может ли сведение файла конфигурации быть возможным решением - по крайней мере, краткосрочным? Например, почему
repo
меньшеwazuh_agent_config
? Почемуrepo
не может быть на верхнем уровне? Разве такой подход не упростит ситуацию?ИМО, как правило, отмена глубокой вложенности, разделение файла конфигурации на разделы (не обязательно создание нескольких файлов, поскольку это может привести к дополнительным когнитивным издержкам при запоминании того, что определено для каждого файла), и добавление комментариев к разделу и/или конкретному параметру конфигурации может сделать файл конфигурации более интуитивно понятным в целом.
Любые идеи относительно следующих шагов?
Спасибо.