Ansible-role-nginx-config: "AnsibleUndefinedVariable: la expresión if en línea en la línea 9 en 'http / grpc.j2' se evaluó como falsa y no se definió ninguna sección más."}

Creado en 22 mar. 2021  ·  10Comentarios  ·  Fuente: nginxinc/ansible-role-nginx-config

Describe el error

No se puede aplicar la configuración cuando la sección http está habilitada. Obtuve el siguiente error:

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

La configuración se ha copiado de este ejemplo:

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

Reproducir

Pasos para reproducir el comportamiento:

# 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
[...]

Comportamiento esperado

Esperaba que la configuración se aplicara sin errores.

Tu entorno:

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

Contexto adicional

Agregue aquí cualquier otro contexto sobre el problema.

bug

Todos 10 comentarios

Encontré el problema. PR próximamente.

gracias por la rápida respuesta, haré un seguimiento del desarrollo de este problema.

¿Puede extraer de main y verificar si el último PR solucionó su problema? Es posible que deba hacer algunos ajustes adicionales en su plantilla, ya que ha habido algunos cambios importantes desde 0.3.3 , pero es de esperar que los ejemplos actualizados en las pruebas de moléculas le ayuden a llegar allí.

Puedo, pero todavía estoy probando otras situaciones de configuración. Acabo de encontrar una situación similar con 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 con la línea "proxy".

Ese es un error más extraño. ¿Puedes comprobar qué versión de Jinja2 estás usando? Las pruebas tanto para el error anterior como para este pasan bien, y he visto que las plantillas fallan para otras personas cuando se usan versiones anteriores de Jinja2.

Aquí está la versión:

python3-jinja2 2.10.1-2

También tengo problemas para aplicar un proxy: sección en http_settings. Sigue siendo ignorado y no se escribe nada en 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

Es posible que desee actualizar a Jinja2 2.11.x y ver si eso soluciona alguno de sus errores. Re proxy , hay un error tipográfico debajo de defaults/main/template.yml . Debe incluir los detalles de su proxy en nginx_config_http_template . Crearé un PR separado para abordar eso lo antes posible. En caso de duda, las pruebas de moléculas son siempre una buena fuente de verdad y siempre deben ser completamente funcionales.

Abrí un problema separado para el proxy: problema anterior para no enviar spam a este.

Tener el mismo problema con respecto a http/gzip.j2 . Intenté actualizar a Jinja2==2.11.3 , pero eso tampoco ayudó.
Esta es la configuración:

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

Error:

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

La línea 27 incluye la plantilla proxied . ¿Puede intentar ejecutar el ejemplo aquí https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 y ver si todavía tiene algún problema? Eso ayudará a determinar si se trata de un problema con el rol o tal vez sigue siendo un problema de Jinja2 (¿tal vez Jinja2 no se actualizó correctamente?).

¿Fue útil esta página
0 / 5 - 0 calificaciones