Awx-operator: extra_settings no agrega comillas alrededor de los valores de cadena

Creado en 25 ago. 2021  ·  5Comentarios  ·  Fuente: ansible/awx-operator

TIPO DE PROBLEMA
  • Informe de error
RESUMEN

El uso de extra_settings no es posible establecer valores de cadena en las claves de configuración de AWX, ya que no incluye el valor de cadena entre comillas, lo que genera un error de python, ya que settings.py lo trata como un nombre de variable, por lo que no se pueden mostrar los contenedores web y de tareas.

AMBIENTE
  • Versión AWX: 19.2.2
  • Versión del operador: 0.13.0
  • Versión de Kubernetes: 1.20
  • Método de instalación de AWX: instalación basada en kubernetes mediante awx-operator
PASOS PARA REPRODUCIR

Establezca debajo de extra_settings en la plantilla del operador,

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

Aplique la plantilla para implementar AWX en el espacio de nombres de kubenetes.
kubectl aplicar -f-norte

RESULTADOS PREVISTOS

El operador debe analizar con seguridad extra_settings para agregar la siguiente línea en /etc/tower/settings.py
AUTH_LDAP_BIND_DN = "cn=admin,dc=ejemplo,dc=com"

Y los contenedores AWX deberían poder leer esta clave y funcionar bien sin ningún error.

RESULTADOS ACTUALES

El operador no agrega comillas alrededor de la cadena DN, por lo que la ejecución de python falla con el siguiente error.

Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/asgi.py", línea 12, en
preparar_env() # NOQA
Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py", línea 103, en prepare_env
si no settings.DEBUG: # pragma: sin portada
Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", línea 79, en __getattr__
self._setup(nombre)
Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", línea 66, en _setup
self._wrapped = Configuración (módulo de configuración)
Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", línea 157, en __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
Archivo "/usr/lib64/python3.8/importlib/__init__.py", línea 127, en import_module
return _bootstrap._gcd_import(nombre[nivel:], paquete, nivel)
Expediente "", línea 1014, en _gcd_import
Expediente "", línea 991, en _buscar_y_cargar
Expediente "", línea 975, en _buscar_y_cargar_desbloqueado
Expediente "", línea 671, en _load_unlocked
Expediente "", línea 783, en exec_module
Expediente "", línea 219, en _llamada_con_marcos_eliminados
Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/settings/production.py", línea 62, en
include(settings_file, opcional(settings_files), scope=locals())
Archivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/split_settings/tools.py", línea 107, en incluir
exec(código_compilado, alcance) # noqa: S102, WPS421
Archivo "/etc/tower/settings.py", línea 75, en
AUTH_LDAP_BIND_DN = cn=admin,dc=ejemplo,dc=com
NameError: el nombre 'com' no está definido

INFORMACIÓN ADICIONAL
REGISTROS DEL OPERADOR DE AWX

No hay errores en los registros del operador, ya que la evaluación del mapa de configuración se realiza correctamente sin problemas: https://github.com/ansible/awx-operator/blob/0.13.0/roles/installer/templates/config.yaml.j2#L93

Comentario más útil

Esto parece ser un efecto secundario no deseado de #432. Por lo menos, la documentación (LÉAME) debe actualizarse para mostrar correctamente la cotización de los valores, ya que el ejemplo actual no funciona.

Todos 5 comentarios

Esto parece ser un efecto secundario no deseado de #432. Por lo menos, la documentación (LÉAME) debe actualizarse para mostrar correctamente la cotización de los valores, ya que el ejemplo actual no funciona.

El ejemplo en la descripción de pr no parece ser un yaml válido. Supongo que hay una mejor verificación de tipo que podríamos hacer aquí.

¿Te refieres al ejemplo en la descripción del _problema_? Sí, hay un error tipográfico allí, sin el extra `, debería ser:

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

Para el registro, aunque el uso de citas en bloque YAML funciona:

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

…eso no es realmente intuitivo, ya que el valor en el primer ejemplo ya es una cadena; no deberíamos necesitar citar las comillas.

¿Te refieres al ejemplo en la descripción del _problema_? Sí, hay un error tipográfico allí, sin el extra `, debería ser:

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

Para el registro, aunque el uso de citas en bloque YAML funciona:

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

…eso no es realmente intuitivo, ya que el valor en el primer ejemplo ya es una cadena; no deberíamos necesitar citar el

El ejemplo en la descripción de pr no parece ser un yaml válido. Supongo que hay una mejor verificación de tipo que podríamos hacer aquí.

Corregido el error tipográfico, gracias @shanemcd

¿Te refieres al ejemplo en la descripción del _problema_? Sí, hay un error tipográfico allí, sin el extra `, debería ser:

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

Para el registro, aunque el uso de citas en bloque YAML funciona:

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

…eso no es realmente intuitivo, ya que el valor en el primer ejemplo ya es una cadena; no deberíamos necesitar citar las comillas.

Gracias, esto funciona. Puede ser bueno si actualizamos el LÉAME por el momento para que otros no encuentren el mismo problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones