Awx-operator: extra_settings не добавляет кавычки вокруг строковых значений

Созданный на 25 авг. 2021  ·  5Комментарии  ·  Источник: ansible/awx-operator

ТИП ПРОБЛЕМЫ
  • Отчет об ошибке
РЕЗЮМЕ

Используя extra_settings, невозможно установить строковые значения для ключей настроек AWX, поскольку оно не включает строковое значение в кавычки, что приводит к ошибке Python, поскольку settings.py обрабатывает его как имя переменной, что приводит к невозможности открыть веб-контейнеры и контейнеры задач.

ОКРУЖАЮЩАЯ ОБСТАНОВКА
  • Версия AWX: 19.2.2
  • Версия оператора: 0.13.0
  • Версия Кубернета: 1.20
  • Метод установки AWX: установка на основе kubernetes с использованием awx-operator
ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ

Установите ниже дополнительные_настройки в шаблоне оператора,

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

Примените шаблон для развертывания AWX в пространстве имен kubenetes.
kubectl применить -f

ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

Оператор должен безопасно проанализировать extra_settings, чтобы добавить строку ниже в /etc/tower/settings.py.
AUTH_LDAP_BIND_DN = "cn=admin,dc=example,dc=com"

И контейнеры AWX должны уметь читать этот ключ и нормально работать без ошибок.

ФАКТИЧЕСКИЕ РЕЗУЛЬТАТЫ

Оператор не добавляет кавычки вокруг строки DN, что приводит к сбою выполнения python с ошибкой ниже.

Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/asgi.py", строка 12, в
prepare_env() # NOQA
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py", строка 103, в prepare_env
если не settings.DEBUG: # pragma: no cover
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", строка 79, в __getattr__
self._setup(имя)
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", строка 66, в _setup
self._wrapped = Настройки (модуль настроек)
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", строка 157, в __init__
мод = importlib.import_module(self.SETTINGS_MODULE)
Файл "/usr/lib64/python3.8/importlib/__init__.py", строка 127, в import_module
вернуть _bootstrap._gcd_import (имя [уровень:], пакет, уровень)
Файл "", строка 1014, в _gcd_import
Файл "", строка 991, в _find_and_load
Файл "", строка 975, в _find_and_load_unlocked
Файл "", строка 671, в _load_unlocked
Файл "", строка 783, в exec_module
Файл "", строка 219, в _call_with_frames_removed
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/settings/production.py", строка 62, в
включить (файл_настроек, необязательный (файлы_настроек), область видимости = локальные ())
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/split_settings/tools.py", строка 107, включен
exec(compiled_code, scope) # noqa: S102, WPS421
Файл "/etc/tower/settings.py", строка 75, в
AUTH_LDAP_BIND_DN = cn=admin,dc=example,dc=com
NameError: имя «com» ​​не определено

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
ЖУРНАЛЫ ОПЕРАТОРА AWX

В журналах оператора нет ошибок, так как оценка карты конфигурации проходит без проблем - https://github.com/ansible/awx-operator/blob/0.13.0/roles/installer/templates/config.yaml.j2#L93

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

Похоже, это непреднамеренный побочный эффект #432. Если ничего другого, документация (README) должна быть обновлена, чтобы показать правильное цитирование значений, поскольку текущий пример не работает.

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

Похоже, это непреднамеренный побочный эффект #432. Если ничего другого, документация (README) должна быть обновлена, чтобы показать правильное цитирование значений, поскольку текущий пример не работает.

Пример в описании pr не кажется допустимым yaml. Я предполагаю, что мы могли бы сделать здесь лучшую проверку типов.

Вы имеете в виду пример в описании _issue_? Да, там опечатка, без лишнего ` должно быть так:

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

Для справки, хотя использование блочного цитирования YAML работает:

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: >-
          "cn=admin,dc=example,dc=com"

… это не очень интуитивно понятно, так как значение в первом примере уже является строкой — нам не нужно заключать кавычки.

Вы имеете в виду пример в описании _issue_? Да, там опечатка, без лишнего ` должно быть так:

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

Для справки, хотя использование блочного цитирования YAML работает:

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: >-
          "cn=admin,dc=example,dc=com"

… это не очень интуитивно понятно, так как значение в первом примере уже является строкой — нам не нужно заключать в кавычки

Пример в описании pr не кажется допустимым yaml. Я предполагаю, что мы могли бы сделать здесь лучшую проверку типов.

Исправил опечатку, спасибо @shanemcd

Вы имеете в виду пример в описании _issue_? Да, там опечатка, без лишнего ` должно быть так:

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

Для справки, хотя использование блочного цитирования YAML работает:

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: >-
          "cn=admin,dc=example,dc=com"

… это не очень интуитивно понятно, так как значение в первом примере уже является строкой — нам не нужно заключать кавычки.

Спасибо, это работает. Может быть, будет хорошо, если мы обновим README на данный момент, чтобы другие не столкнулись с той же проблемой.

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