Ansible-role-nginx-config: "AnsibleUndefinedVariable: der Inline-if-Ausdruck in Zeile 9 in 'http/grpc.j2' wurde auf false ausgewertet und es wurde kein else-Abschnitt definiert."}

Erstellt am 22. März 2021  ·  10Kommentare  ·  Quelle: nginxinc/ansible-role-nginx-config

Beschreibe den Fehler

Konfiguration kann nicht angewendet werden, wenn der http-Abschnitt aktiviert ist. Ich bekomme folgenden Fehler:

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

Die Konfiguration wurde aus diesem Beispiel kopiert:

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

Fortpflanzen

Schritte zum Reproduzieren des Verhaltens:

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

Erwartetes Verhalten

Ich habe erwartet, dass die Konfiguration fehlerfrei übernommen wird

Ihre Umgebung:

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

Zusätzlicher Kontext

Fügen Sie hier jeden weiteren Kontext zu dem Problem hinzu.

bug

Alle 10 Kommentare

Habe das Problem gefunden. PR kommt in Kürze.

vielen Dank für die schnelle Antwort, ich werde die Entwicklung dieses Problems verfolgen.

Können Sie aus dem Main ziehen und überprüfen, ob die neueste PR Ihr Problem behoben hat? Möglicherweise müssen Sie Ihre Vorlage noch weiter optimieren, da seit 0.3.3 einige grundlegende Änderungen vorgenommen wurden, aber hoffentlich helfen Ihnen die aktualisierten Beispiele in den Molekültests, dorthin zu gelangen.

Ich kann, aber ich teste noch andere Konfigurationssituationen. Ich habe gerade eine ähnliche Situation mit gzip gefunden:

        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."}

Scheint mit der "proxied"-Leitung zu tun zu haben.

Das ist ein seltsamerer Fehler. Können Sie überprüfen, welche Version von Jinja2 Sie verwenden? Tests sowohl für den vorherigen als auch für diesen Fehler verlaufen gut, und ich habe gesehen, dass Vorlagen für andere Leute fehlgeschlagen sind, wenn sie ältere Versionen von Jinja2 verwenden.

Hier ist die Version:

python3-jinja2 2.10.1-2

Ich habe auch Probleme beim Anwenden eines Proxy: Abschnitts unter http_settings. Es wird weiterhin ignoriert und nichts in die nginx.conf geschrieben.

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

Vielleicht möchten Sie auf Jinja2 2.11.x aktualisieren und sehen, ob dadurch einer Ihrer Fehler behoben wird. Bezüglich proxy , es gibt einen Tippfehler unter defaults/main/template.yml . Sie sollten Ihre Proxy-Details unter nginx_config_http_template . Ich werde eine separate PR erstellen, um das so schnell wie möglich zu beheben. Im Zweifelsfall sind die Molekültests immer eine gute Quelle der Wahrheit und sollten immer voll funktionsfähig sein.

Ich habe ein separates Problem für den Proxy geöffnet: Problem oben, um dieses nicht zu spammen.

Habe das gleiche Problem in Bezug auf http/gzip.j2 . Ich habe versucht, auf Jinja2==2.11.3 aktualisieren, aber auch das hat nicht geholfen.
Dies ist die Konfiguration:

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

Fehler:

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

Zeile 27 enthält die Vorlage proxied . Können Sie versuchen, das Beispiel hier https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 auszuführen und zu sehen, ob immer noch Probleme auftreten? Das hilft zu bestimmen, ob es ein Problem mit der Rolle ist oder vielleicht immer noch ein Jinja2-Problem (vielleicht wurde Jinja2 nicht richtig aktualisiert?).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen