لا يمكن تطبيق التكوين عند تمكين قسم http. أحصل على الخطأ التالية:
"AnsibleUndefinedVariable: the inline if-expression on line 9 in 'http/grpc.j2' evaluated to false and no else section was defined."}
تم نسخ التكوين من هذا المثال:
https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml
خطوات إعادة إنتاج السلوك:
# 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
[...]
كنت أتوقع أن يتم تطبيق التكوين بدون أخطاء
أضف أي سياق آخر حول المشكلة هنا.
وجدت المشكلة. العلاقات العامة قريبا.
أشكركم على الرد السريع وسأتابع تطور هذا الموضوع.
هل يمكنك الانسحاب من الصفحة الرئيسية ومعرفة ما إذا كانت أحدث العلاقات العامة قد أصلحت مشكلتك؟ قد تحتاج إلى إجراء بعض التعديلات الإضافية على القالب الخاص بك نظرًا لوجود بعض التغييرات المتقطعة منذ 0.3.3
، ولكن نأمل أن تساعدك الأمثلة المحدثة في اختبارات الجزيء في الوصول إلى هناك.
يمكنني ذلك ، لكنني ما زلت أختبر حالات التكوين الأخرى. لقد وجدت للتو موقفًا مشابهًا مع 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."}
يبدو أنه مرتبط بالخط "الوكيل".
هذا خطأ أغرب. هل يمكنك التحقق من إصدار Jinja2 الذي تستخدمه؟ اجتازت الاختبارات لكل من الخطأ السابق وهذا الخطأ على ما يرام ، وقد رأيت قوالب تفشل لأشخاص آخرين عند استخدام إصدارات أقدم من Jinja2.
ها هو الإصدار:
python3-jinja2 2.10.1-2
أواجه أيضًا مشكلة في تطبيق وكيل: قسم ضمن http_settings. يستمر تجاهلها ولا تتم كتابة أي شيء على 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
قد ترغب في التحديث إلى Jinja2 2.11.x
ومعرفة ما إذا كان ذلك يعالج أيًا من أخطائك. بالنسبة إلى proxy
، هناك خطأ إملائي أقل من defaults/main/template.yml
. يجب عليك تضمين تفاصيل الوكيل الخاص بك ضمن nginx_config_http_template
. سأقوم بإنشاء علاقات عامة منفصلة لمعالجة ذلك في أسرع وقت ممكن. عندما تكون في شك ، فإن اختبارات الجزيء هي دائمًا مصدر جيد للحقيقة ويجب أن تكون دائمًا تعمل بكامل طاقتها.
فتحت مشكلة منفصلة للوكيل الوكيل: المشكلة أعلاه لعدم إرسال بريد عشوائي إلى هذا.
وجود نفس المشكلة فيما يتعلق http/gzip.j2
. حاولت الترقية إلى Jinja2==2.11.3
، لكن هذا لم يساعد أيضًا.
هذا هو التكوين:
---
nginx_config_main_template:
http_settings:
gzip:
enable: true
buffers:
number: 32
size: 16k
comp_level: 6
vary: true
proxied:
- any
types:
- "*"
خطأ:
"msg": "AnsibleUndefinedVariable: the inline if-expression on line 27 in 'http/gzip.j2' evaluated to false and no else section was defined.",
يتضمن السطر 27 القالب proxied
. هل يمكنك تجربة تشغيل المثال هنا https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 ومعرفة ما إذا كنت لا تزال تواجه أية مشكلات؟ سيساعد ذلك في تحديد ما إذا كانت مشكلة تتعلق بالدور أم أنها لا تزال مشكلة Jinja2 (ربما لم يتم تحديث Jinja2 بشكل صحيح؟).