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安装方法:基于kubernetes的安装使用awx-operator
重现步骤

在操作员模板中设置下面的 extra_settings,

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

应用模板将 AWX 部署到 kubenetes 命名空间。
kubectl 应用 -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
文件“/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py”,第 103 行,在 prepare_env
if not settings.DEBUG: # pragma: no cover
文件“/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py”,第 79 行,在 __getattr__
self._setup(名称)
_setup 中的文件“/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py”,第 66 行
self._wrapped = 设置(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 行,在
包括(设置文件,可选(设置文件),范围=本地())
文件“/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"

…这不是很直观,因为第一个示例中的值已经是一个字符串——我们不需要引用引号。

谢谢,这行得通。 如果我们暂时更新自述文件可能会很好,这样其他人就不会遇到同样的问题。

此页面是否有帮助?
0 / 5 - 0 等级