Ansible-role-nginx-config: "AnsibleUndefinedVariable : l'expression if en ligne sur la ligne 9 dans 'http/grpc.j2' évaluée à false et aucune autre section n'a été définie."}

Créé le 22 mars 2021  ·  10Commentaires  ·  Source: nginxinc/ansible-role-nginx-config

Décrivez le bogue

Impossible d'appliquer la configuration lorsque la section http est activée. J'obtiens l'erreur suivante :

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

La configuration a été copiée à partir de cet exemple :

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

Reproduire

Étapes pour reproduire le comportement :

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

Comportement prévisible

Je m'attendais à ce que la configuration s'applique sans erreur

Votre environnement :

  • nginxinc.nginx_config, 0.3.3
  • nginxinc.nginx, 0.19.1
  • ansible : 2.9.6+dfsg-1
  • Ubuntu 20.04

Contexte supplémentaire

Ajoutez ici tout autre contexte concernant le problème.

bug

Tous les 10 commentaires

Trouvé le problème. PR à venir.

merci pour la réponse rapide, je vais suivre l'évolution de ce problème.

Pouvez-vous tirer du principal et vérifier si le dernier PR a résolu votre problème ? Vous devrez peut-être apporter quelques modifications supplémentaires à votre modèle car il y a eu quelques changements majeurs depuis 0.3.3 , mais j'espère que les exemples mis à jour dans les tests de molécules devraient vous aider à y arriver.

Je peux, mais je teste toujours d'autres situations de configuration. Je viens de trouver une situation similaire avec 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."}

Semble être lié à la ligne "proxy".

C'est une erreur plus étrange. Pouvez-vous vérifier quelle version de Jinja2 vous utilisez ? Les tests pour l'erreur précédente et cette erreur passent très bien, et j'ai vu des modèles échouer pour d'autres personnes lors de l'utilisation d'anciennes versions de Jinja2.

Voici la version :

python3-jinja2 2.10.1-2

J'ai également des difficultés à appliquer un proxy : section sous http_settings. Il continue d'être ignoré et rien n'est écrit dans 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

Vous voudrez peut-être mettre à jour vers Jinja2 2.11.x et voir si cela résout l'une de vos erreurs. Concernant proxy , il y a une faute de frappe sous defaults/main/template.yml . Vous devez inclure les détails de votre procuration sous nginx_config_http_template . Je vais créer un PR séparé pour résoudre ce problème dès que possible. En cas de doute, les tests moléculaires sont toujours une bonne source de vérité et doivent toujours être pleinement fonctionnels.

J'ai ouvert un problème séparé pour le proxy : problème ci-dessus pour ne pas spammer celui-ci.

Avoir le même problème en ce qui concerne http/gzip.j2 . J'ai essayé de passer à Jinja2==2.11.3 , mais cela n'a pas aidé non plus.
Voici la config :

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

Erreur:

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

La ligne 27 comprend le modèle proxied . Pouvez-vous essayer d'exécuter l'exemple ici https://github.com/nginxinc/ansible-role-nginx-config/blob/main/molecule/default/converge.yml#L62 -L76 et voir si vous rencontrez toujours des problèmes ? Cela aidera à déterminer s'il s'agit d'un problème avec le rôle ou s'il s'agit toujours d'un problème Jinja2 (peut-être que Jinja2 n'a pas été mis à jour correctement ?).

Cette page vous a été utile?
0 / 5 - 0 notes