使用 extra_settings 无法将字符串值设置为 AWX 设置键,因为它不包含引号中的字符串值,从而导致 python 错误,因为 settings.py 将其视为变量名,因此导致无法启动 Web 和任务容器。
在操作员模板中设置下面的 extra_settings,
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
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)
文件 ”
文件 ”
文件 ”
文件 ”
文件 ”
文件 ”
文件“/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”未定义
操作员日志中没有错误,因为配置映射评估顺利进行,没有任何问题 - https://github.com/ansible/awx-operator/blob/0.13.0/roles/installer/templates/config.yaml.j2#L93
这似乎是#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"
…这不是很直观,因为第一个示例中的值已经是一个字符串——我们不需要引用引号。
谢谢,这行得通。 如果我们暂时更新自述文件可能会很好,这样其他人就不会遇到同样的问题。
最有用的评论
这似乎是#432 的意外副作用。 如果不出意外,应该更新文档(README)以显示正确引用值,因为当前示例不起作用。