Awx-operator: extra_settings fügt Zeichenfolgenwerte nicht in Anführungszeichen ein

Erstellt am 25. Aug. 2021  ·  5Kommentare  ·  Quelle: ansible/awx-operator

PROBLEMTYP
  • Fehlerbericht
ZUSAMMENFASSUNG

Mit extra_settings ist es nicht möglich, Zeichenfolgenwerte auf AWX-Einstellungsschlüssel festzulegen, da sie den Zeichenfolgenwert nicht in Anführungszeichen setzen, was zu einem Python-Fehler führt, da settings.py ihn als Variablennamen behandelt, was dazu führt, dass Web- und Aufgabencontainer nicht aufgerufen werden können.

UMGEBUNG
  • AWX-Version: 19.2.2
  • Betreiberversion: 0.13.0
  • Kubernetes-Version: 1.20
  • AWX-Installationsmethode: Kubernetes-basierte Installation mit awx-operator
SCHRITTE ZUM REPRODUZIEREN

Unter extra_settings in der Betreibervorlage festlegen,

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

Wenden Sie die Vorlage an, um AWX im kubenetes-Namespace bereitzustellen.
kubectl anwenden -f-n

ERWARTETE ERGEBNISSE

Der Bediener sollte die extra_settings sicher parsen, um die folgende Zeile in /etc/tower/settings.py hinzuzufügen
AUTH_LDAP_BIND_DN = "cn=admin,dc=beispiel,dc=com"

Und AWX-Container sollten in der Lage sein, diesen Schlüssel zu lesen und ohne Fehler zu funktionieren.

TATSÄCHLICHE ERGEBNISSE

Der Operator fügt keine Anführungszeichen um die DN-Zeichenfolge hinzu, was dazu führt, dass die Python-Ausführung mit dem folgenden Fehler fehlschlägt.

Datei "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/asgi.py", Zeile 12, in
Prepare_env() # NOQA
Datei „/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py“, Zeile 103, in Prepare_env
wenn nicht settings.DEBUG: # Pragma: kein Cover
Datei "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", Zeile 79, in __getattr__
self._setup(Name)
Datei „/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py“, Zeile 66, in _setup
self._wrapped = Einstellungen (settings_module)
Datei "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", Zeile 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
Datei "/usr/lib64/python3.8/importlib/__init__.py", Zeile 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
Datei "", Zeile 1014, in _gcd_import
Datei "", Zeile 991, in _find_and_load
Datei "", Zeile 975, in _find_and_load_unlocked
Datei "", Zeile 671, in _load_unlocked
Datei "", Zeile 783, in exec_module
Datei "", Zeile 219, in _call_with_frames_removed
Datei "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/settings/production.py", Zeile 62, in
include(settings_file, optional(settings_files), scope=locals())
Datei "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/split_settings/tools.py", Zeile 107, im Include
exec(compiled_code, scope) # noqa: S102, WPS421
Datei "/etc/tower/settings.py", Zeile 75, in
AUTH_LDAP_BIND_DN = cn=admin,dc=beispiel,dc=com
NameError: Name „com“ ist nicht definiert

ZUSÄTZLICHE INFORMATION
AWX-OPERATOR-LOGS

Kein Fehler in den Bedienerprotokollen, da die Auswertung der Konfigurationskarte ohne Probleme durchläuft – https://github.com/ansible/awx-operator/blob/0.13.0/roles/installer/templates/config.yaml.j2#L93

Hilfreichster Kommentar

Dies scheint ein unbeabsichtigter Nebeneffekt von #432 zu sein. Wenn nichts anderes, sollte die Dokumentation (README) aktualisiert werden, um die Werte korrekt zu zitieren, da das aktuelle Beispiel nicht funktioniert.

Alle 5 Kommentare

Dies scheint ein unbeabsichtigter Nebeneffekt von #432 zu sein. Wenn nichts anderes, sollte die Dokumentation (README) aktualisiert werden, um die Werte korrekt zu zitieren, da das aktuelle Beispiel nicht funktioniert.

Das Beispiel in der PR-Beschreibung scheint keine gültige Yaml-Datei zu sein. Ich vermute, es gibt eine bessere Typprüfung, die wir hier durchführen könnten.

Du meinst das Beispiel in der _Problem_-Beschreibung? Ja, da ist ein Tippfehler drin, ohne das zusätzliche ` müsste es heißen:

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

Für das Protokoll, obwohl die Verwendung von YAML-Blockzitaten funktioniert:

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

… das ist nicht wirklich intuitiv, da der Wert im ersten Beispiel bereits ein String ist – wir sollten die Anführungszeichen nicht brauchen.

Du meinst das Beispiel in der _Problem_-Beschreibung? Ja, da ist ein Tippfehler drin, ohne das zusätzliche ` müsste es heißen:

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

Für das Protokoll, obwohl die Verwendung von YAML-Blockzitaten funktioniert:

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

… das ist nicht wirklich intuitiv, da der Wert im ersten Beispiel bereits ein String ist – wir sollten den nicht in Anführungszeichen setzen müssen

Das Beispiel in der PR-Beschreibung scheint keine gültige Yaml-Datei zu sein. Ich vermute, es gibt eine bessere Typprüfung, die wir hier durchführen könnten.

Tippfehler korrigiert, danke @shanemcd

Du meinst das Beispiel in der _Problem_-Beschreibung? Ja, da ist ein Tippfehler drin, ohne das zusätzliche ` müsste es heißen:

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

Für das Protokoll, obwohl die Verwendung von YAML-Blockzitaten funktioniert:

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

… das ist nicht wirklich intuitiv, da der Wert im ersten Beispiel bereits ein String ist – wir sollten die Anführungszeichen nicht brauchen.

Danke, das funktioniert. Vielleicht ist es gut, wenn wir die README vorerst aktualisieren, damit andere nicht auf dasselbe Problem stoßen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen