Ansible-role-nginx-config: "AnsibleUndefinedVariable: تم تقييم تعبير if المضمّن في السطر 9 في 'http / grpc.j2' إلى false ولم يتم تحديد أي قسم آخر."}

تم إنشاؤها على ٢٢ مارس ٢٠٢١  ·  10تعليقات  ·  مصدر: nginxinc/ansible-role-nginx-config

صف الخلل

لا يمكن تطبيق التكوين عند تمكين قسم 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
[...]

سلوك متوقع

كنت أتوقع أن يتم تطبيق التكوين بدون أخطاء

بيئتك:

  • nginxinc.nginx_config ، 0.3.3
  • nginxinc.nginx ، 0.19.1
  • غير صالح: 2.9.6 + dfsg-1
  • أوبونتو 20.04.2018

سياق إضافي

أضف أي سياق آخر حول المشكلة هنا.

bug

ال 10 كومينتر

وجدت المشكلة. العلاقات العامة قريبا.

أشكركم على الرد السريع وسأتابع تطور هذا الموضوع.

هل يمكنك الانسحاب من الصفحة الرئيسية ومعرفة ما إذا كانت أحدث العلاقات العامة قد أصلحت مشكلتك؟ قد تحتاج إلى إجراء بعض التعديلات الإضافية على القالب الخاص بك نظرًا لوجود بعض التغييرات المتقطعة منذ 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 بشكل صحيح؟).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات