Ansible-role-nginx-config: "AnsibleUndefinedVariable: a expressão if inline na linha 9 em 'http / grpc.j2' avaliada como falsa e nenhuma outra seção foi definida."}

Criado em 22 mar. 2021  ·  10Comentários  ·  Fonte: nginxinc/ansible-role-nginx-config

Descreva o bug

Não é possível aplicar a configuração quando a seção http está habilitada. Estou tendo o erro a seguir:

"AnsibleUndefinedVariable: the inline if-expression on line 9 in 'http/grpc.j2' evaluated to false and no else section was defined."}

A configuração foi copiada deste exemplo:

https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml

Reproduzir

Passos para reproduzir o comportamento:

# https://github.com/nginxinc/ansible-role-nginx
- name: Install NGINX
  include_role:
    name: nginxinc.nginx
  vars:
    nginx_install_from: os_repository
    nginx_start: false
    nginx_type: opensource
    nginx_state: present

# https://github.com/nginxinc/ansible-role-nginx-config
- name: Configure NGINX
  include_role:
    name: nginxinc.nginx_config
  vars:
    nginx_config_start: false
    nginx_config_cleanup: true
    nginx_config_debug_output: true
    nginx_config_debug_tasks: true

    # top level nginx configuration
    nginx_config_main_template_enable: true
    nginx_config_main_template:
      template_file: nginx.conf.j2
      conf_file_name: nginx.conf
      conf_file_location: /etc/nginx/
      worker_connections: 1024
      http_custom_includes:
        - "/etc/nginx/sites-enabled/*.conf"
      user: www-data
      worker_processes: auto
      pid: /var/run/nginx.pid

      # http configuration section
      http_enable: true
      http_settings:
        grpc_global:
          bind:
            address: $remote_addr
            transparent: false
          buffer_size: 4k
          connect_timeout: 60s
[...]

Comportamento esperado

Eu esperava que a configuração fosse aplicada sem erros

Seu ambiente:

  • nginxinc.nginx_config, 0.3.3
  • nginxinc.nginx, 0.19.1
  • ansible: 2.9.6 + dfsg-1
  • ubuntu 20.04

Contexto adicional

Adicione qualquer outro contexto sobre o problema aqui.

bug

Todos 10 comentários

Encontrou o problema. PR em breve.

obrigado pela resposta rápida, irei acompanhar o desenvolvimento deste assunto.

Você pode puxar do principal e verificar se o PR mais recente corrigiu seu problema? Você pode precisar fazer mais alguns ajustes em seu modelo, uma vez que houve algumas alterações importantes desde 0.3.3 , mas espero que os exemplos atualizados nos testes de molécula ajudem você a chegar lá.

Posso, mas ainda estou testando outras situações de configuração. Acabei de encontrar uma situação semelhante com o gzip:

        gzip:
          enable: true
          buffers:
            number: 32
            size: 4k
          comp_level: 1
          disable:
            - '"msie6"'
          http_version: 1.1
          min_length: 20
          proxied:
            - expired
          types:
            - text/html
          vary: false
fatal: [testing-snap05.snapview.net]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: the inline if-expression on line 27 in 'http/gzip.j2' evaluated to false and no else section was defined."}

Parece estar relacionado à linha "proxy".

Esse é um erro mais estranho. Você pode verificar qual versão do Jinja2 você está usando? Os testes para o erro anterior e para este passam bem, e tenho visto os modelos falharem para outras pessoas ao usar versões mais antigas do Jinja2.

Aqui está a versão:

python3-jinja2 2.10.1-2

Também estou tendo problemas para aplicar um proxy: seção em http_settings. Ele continua sendo ignorado e nada é gravado no nginx.conf.

proxy:  # Optional -- Configure Proxy
  buffer_size: 4k  # Optional
  buffering: true  # Optional boolean
  buffers:  # Optional
    number: 8  # Required
    size: 4k  # Required
  busy_buffers_size: 8k  # Optional
  cache: false  # Optional -- Set to 'false' or specify cache zone

Você pode querer atualizar para Jinja2 2.11.x e ver se isso resolve algum dos seus erros. Re proxy , há um erro de digitação em defaults/main/template.yml . Você deve incluir seus dados de proxy em nginx_config_http_template . Vou criar um PR separado para resolver isso o mais rápido possível. Na dúvida, os testes de moléculas são sempre uma boa fonte de verdade e devem sempre ser totalmente funcionais.

Abri um problema separado para o proxy: o problema acima para não enviar spam para este.

Tendo o mesmo problema em relação a http/gzip.j2 . Tentei atualizar para Jinja2==2.11.3 , mas isso também não ajudou.
Esta é a configuração:

---
nginx_config_main_template:
  http_settings:
    gzip:
      enable: true
      buffers:
        number: 32
        size: 16k
      comp_level: 6
      vary: true
      proxied:
      - any
      types:
      - "*"

Erro:

    "msg": "AnsibleUndefinedVariable: the inline if-expression on line 27 in 'http/gzip.j2' evaluated to false and no else section was defined.",

A linha 27 inclui o modelo proxied . Você pode tentar executar o exemplo aqui https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 e ver se ainda tem problemas? Isso ajudará a determinar se é um problema com a função ou talvez ainda seja um problema do Jinja2 (talvez o Jinja2 não tenha sido atualizado corretamente?).

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