Wazuh-ansible: Нужен более простой способ переопределить отдельные части параметров конфигурации

Созданный на 12 дек. 2018  ·  5Комментарии  ·  Источник: wazuh/wazuh-ansible

Было бы идеально, если бы хэш _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)

statuavailable typenhancement

Самый полезный комментарий

Мои два цента:

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

Мне было интересно, может ли сведение файла конфигурации быть возможным решением - по крайней мере, краткосрочным? Например, почему repo меньше wazuh_agent_config ? Почему repo не может быть на верхнем уровне? Разве такой подход не упростит ситуацию?

ИМО, как правило, отмена глубокой вложенности, разделение файла конфигурации на разделы (не обязательно создание нескольких файлов, поскольку это может привести к дополнительным когнитивным издержкам при запоминании того, что определено для каждого файла), и добавление комментариев к разделу и/или конкретному параметру конфигурации может сделать файл конфигурации более интуитивно понятным в целом.

Любые идеи относительно следующих шагов?

Спасибо.

Все 5 Комментарий

Привет @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, сохраняя при этом совместимость с уже установленными способами работы роли.

Любая обратная связь приветствуется, спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги