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
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
[...]
Esperaba que la configuración se aplicara sin errores.
Agregue aquí cualquier otro contexto sobre el problema.
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?).