Ansible-role-nginx-config: "AnsibleUndefinedVariable: встроСнноС if-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² строкС 9 Π² 'http / grpc.j2' ΠΎΡ†Π΅Π½Π΅Π½ΠΎ ΠΊΠ°ΠΊ false, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» else Π½Π΅ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½."}

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 22 ΠΌΠ°Ρ€. 2021  Β·  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

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ сюда любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ контСкст ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ВсС 10 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

НашСл ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π‘ΠΊΠΎΡ€ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ PR.

спасибо Π·Π° быстрый ΠΎΡ‚Π²Π΅Ρ‚, Π±ΡƒΠ΄Ρƒ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ этого вопроса.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈΠ· основного ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, устранил Π»ΠΈ послСдний PR Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся внСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² свой шаблон, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° 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

Π£ мСня Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π° proxy: Π² 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 ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, устранит Π»ΠΈ это ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²Π°ΡˆΠΈΡ… ошибок. Re proxy , Π² ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚Π΅ defaults/main/template.yml Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ своСго прокси Π² ΠΏΠΎΠ»Π΅ nginx_config_http_template . Π― создам ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ PR, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС. Π’ случаС сомнСний молСкулярныС тСсты всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ источником истины ΠΈ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π― ΠΎΡ‚ΠΊΡ€Ρ‹Π» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ для прокси: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΏΠ°ΠΌΠΈΡ‚ΡŒ этот.

Π’Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ 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 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ