Ansible-role-nginx-config: "AnsibleUndefinedVariable: ekspresi if sebaris pada baris 9 di 'http/grpc.j2' dievaluasi menjadi false dan tidak ada bagian lain yang ditentukan."}

Dibuat pada 22 Mar 2021  ·  10Komentar  ·  Sumber: nginxinc/ansible-role-nginx-config

Jelaskan bugnya

Tidak dapat menerapkan konfigurasi saat bagian http diaktifkan. Saya mendapatkan kesalahan berikut:

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

Konfigurasi telah disalin dari contoh ini:

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

Untuk mereproduksi

Langkah-langkah untuk mereproduksi perilaku:

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

Perilaku yang diharapkan

Saya mengharapkan konfigurasi untuk diterapkan tanpa kesalahan

Lingkungan Anda:

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

Konteks tambahan

Tambahkan konteks lain tentang masalah di sini.

bug

Semua 10 komentar

Menemukan masalah. PR datang sebentar lagi.

terima kasih atas respon cepatnya, saya akan menindaklanjuti perkembangan masalah ini.

Bisakah Anda menarik dari utama dan memeriksa apakah PR terbaru memperbaiki masalah Anda? Anda mungkin perlu melakukan beberapa penyesuaian lebih lanjut pada template Anda karena ada beberapa perubahan yang mengganggu sejak 0.3.3 , tetapi semoga contoh yang diperbarui dalam pengujian molekul akan membantu Anda mencapainya.

Saya bisa, tetapi saya masih menguji situasi konfigurasi lainnya. Saya baru saja menemukan situasi serupa dengan 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."}

Tampaknya terkait dengan garis "proksi".

Itu kesalahan yang lebih aneh. Bisakah Anda memeriksa versi Jinja2 yang Anda gunakan? Pengujian untuk kesalahan sebelumnya dan ini berhasil dengan baik, dan saya telah melihat templat gagal untuk orang lain saat menggunakan versi Jinja2 yang lebih lama.

Ini versinya:

python3-jinja2 2.10.1-2

Saya juga mengalami masalah dalam menerapkan proxy: bagian di bawah http_settings. Itu terus diabaikan dan tidak ada yang ditulis ke 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

Anda mungkin ingin memperbarui ke Jinja2 2.11.x dan melihat apakah itu mengatasi kesalahan Anda. Re proxy , ada kesalahan ketik di bawah defaults/main/template.yml . Anda harus menyertakan detail proxy Anda di bawah nginx_config_http_template . Saya akan membuat PR terpisah untuk mengatasinya secepatnya. Jika ragu, tes molekul selalu merupakan sumber kebenaran yang baik dan harus selalu berfungsi penuh.

Saya membuka masalah terpisah untuk proxy: masalah di atas untuk tidak mengirim spam yang satu ini.

Memiliki masalah yang sama dalam hal http/gzip.j2 . Mencoba memutakhirkan ke Jinja2==2.11.3 , tetapi itu juga tidak membantu.
Ini konfigurasinya:

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

Kesalahan:

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

Baris 27 menyertakan template proxied . Bisakah Anda mencoba menjalankan contoh di sini https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 dan melihat apakah Anda masih mengalami masalah? Itu akan membantu menentukan apakah itu masalah dengan peran atau mungkin masih masalah Jinja2 (mungkin Jinja2 tidak memperbarui dengan benar?).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat