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
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
[...]
Ich habe erwartet, dass die Konfiguration fehlerfrei übernommen wird
Fügen Sie hier jeden weiteren Kontext zu dem Problem hinzu.
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?).