Awx-operator: extra_settings não adiciona aspas em torno de valores de string

Criado em 25 ago. 2021  ·  5Comentários  ·  Fonte: ansible/awx-operator

TIPO DE PROBLEMA
  • Relatório de erro
RESUMO

Usando extra_settings, não é possível definir valores de string para chaves de configuração do AWX, pois não abrange o valor de string entre aspas, resultando em erro python, pois settings.py o trata como nome de variável, resultando em falha ao abrir contêineres da Web e de tarefas.

MEIO AMBIENTE
  • Versão AWX: 19.2.2
  • Versão do operador: 0.13.0
  • Versão do Kubernetes: 1.20
  • Método de instalação do AWX: instalação baseada em kubernetes usando awx-operator
PASSOS PARA REPRODUZIR

Defina abaixo extra_settings no modelo do operador,

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

Aplique o modelo para implantar o AWX no namespace kubenetes.
kubectl apply -f-n

RESULTADOS ESPERADOS

O operador deve analisar com segurança o extra_settings para adicionar a linha abaixo em /etc/tower/settings.py
AUTH_LDAP_BIND_DN = "cn=admin,dc=exemplo,dc=com"

E os contêineres AWX devem ser capazes de ler essa chave e aparecer bem sem erros.

RESULTADOS REAIS

O operador não adiciona aspas ao redor da string DN, fazendo com que a execução do python falhe com o erro abaixo.

Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/asgi.py", linha 12, em
prepare_env() # NOQA
Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py", linha 103, em prepare_env
se não configurações.DEBUG: # pragma: sem capa
Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", linha 79, em __getattr__
self._setup(nome)
Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", linha 66, em _setup
self._wrapped = Configurações(settings_module)
Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", linha 157, em __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
Arquivo "/usr/lib64/python3.8/importlib/__init__.py", linha 127, em import_module
return _bootstrap._gcd_import(nome[nível:], pacote, nível)
Arquivo "", linha 1014, em _gcd_import
Arquivo "", linha 991, em _find_and_load
Arquivo "", linha 975, em _find_and_load_unlocked
Arquivo "", linha 671, em _load_unlocked
Arquivo "", linha 783, em exec_module
Arquivo "", linha 219, em _call_with_frames_removed
Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/settings/production.py", linha 62, em
include(settings_file, optional(settings_files), scope=locals())
Arquivo "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/split_settings/tools.py", linha 107, em include
exec(compiled_code, scope) # noqa: S102, WPS421
Arquivo "/etc/tower/settings.py", linha 75, em
AUTH_LDAP_BIND_DN = cn=admin,dc=exemplo,dc=com
NameError: nome 'com' não está definido

INFORMAÇÕES ADICIONAIS
LOGS DO OPERADOR AWX

Nenhum erro nos logs do operador, pois a avaliação do mapa de configuração passa bem sem problemas - https://github.com/ansible/awx-operator/blob/0.13.0/roles/installer/templates/config.yaml.j2#L93

Comentários muito úteis

Este parece ser um efeito colateral não intencional do #432. Se nada mais, a documentação (README) deve ser atualizada para mostrar corretamente citando os valores, pois o exemplo atual não funciona.

Todos 5 comentários

Este parece ser um efeito colateral não intencional do #432. Se nada mais, a documentação (README) deve ser atualizada para mostrar corretamente citando os valores, pois o exemplo atual não funciona.

O exemplo na descrição do pr não parece ser yaml válido. Eu estou supondo que há alguma verificação de tipo melhor que poderíamos fazer aqui.

Você quer dizer o exemplo na descrição do _issue_? Sim, há um erro de digitação, sem o ` extra, deve ser:

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

Para constar, embora o uso da citação em bloco YAML funcione:

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

…isso não é muito intuitivo, pois o valor no primeiro exemplo já é uma string — não deveríamos precisar citar as aspas.

Você quer dizer o exemplo na descrição do _issue_? Sim, há um erro de digitação, sem o ` extra, deve ser:

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

Para constar, embora o uso da citação em bloco YAML funcione:

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

…isso não é muito intuitivo, pois o valor no primeiro exemplo já é uma string — não precisaríamos citar o

O exemplo na descrição do pr não parece ser yaml válido. Eu estou supondo que há alguma verificação de tipo melhor que poderíamos fazer aqui.

Corrigido o erro de digitação, obrigado @shanemcd

Você quer dizer o exemplo na descrição do _issue_? Sim, há um erro de digitação, sem o ` extra, deve ser:

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

Para constar, embora o uso da citação em bloco YAML funcione:

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

…isso não é muito intuitivo, pois o valor no primeiro exemplo já é uma string — não deveríamos precisar citar as aspas.

Obrigado, isso funciona. Pode ser bom se atualizarmos o README por enquanto para que outros não encontrem o mesmo problema.

Esta página foi útil?
0 / 5 - 0 avaliações