Awx-operator: extra_settingsは、文字列値の前後に引用符を追加しません

作成日 2021年08月25日  ·  5コメント  ·  ソース: ansible/awx-operator

問題の種類
  • バグレポート
まとめ

extra_settingsを使用すると、文字列値をAWX設定キーに設定できません。これは、文字列値が引用符で囲まれていないため、Pythonエラーがsettings.pyとして扱われるため、Webおよびタスクコンテナの起動に失敗するためです。

環境
  • AWXバージョン:19.2.2
  • オペレーターバージョン:0.13.0
  • Kubernetesバージョン:1.20
  • AWXのインストール方法:awx-operatorを使用したkubernetesベースのインストール
再現する手順

オペレーターテンプレートのextra_settingsの下に設定します。

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

テンプレートを適用して、AWXをkubenetes名前空間にデプロイします。
kubectl apply -f-n

予想された結果

オペレーターは、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
prepare_envのファイル"/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py"、行103
設定でない場合DEBUG:#プラグマ:カバーなし
ファイル"/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py"、79行目、__ getattr__
self._setup(name)
ファイル"/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py"、66行目、_setup
self._wrapped = Settings(settings_module)
ファイル"/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py"、157行目、__ init__
mod = importlib.import_module(self.SETTINGS_MODULE)
import_moduleのファイル「/usr/lib64/python3.8/importlib/__init__.py」、127行目
return _bootstrap._gcd_import(name [level:]、package、level)
ファイル ""、行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行目
include(settings_file、optional(settings_files)、scope = locals())
ファイル"/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 評価