saltstack / salt

Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
https://repo.saltproject.io/
Apache License 2.0
14.1k stars 5.47k forks source link

Undefined jinja variable #7625

Closed gl1ch closed 10 years ago

gl1ch commented 10 years ago

Hi, after upgrading to 0.17 I started getting an error "Undefined jinja variable; line 353 in template" when I try and set the following variable using grains. This worked before, did something change?

{%- set hostname = grains['id'] %}

snmp-package:
  pkg:
    - name: {{ pillar['packages']['snmp'] }}
    - installed

snmp-service:
  service:
    - name: {{ pillar['packages']['snmp-service'] }}
    - running
    - watch:
      - pkg: snmp-package
      - file: /etc/snmp/snmpd.conf
  file.managed:
    - name: /etc/snmp/snmpd.conf
    - user: root
    - group: root
    - mode: 600
    - source: salt://linux-server/snmp/etc/snmpd.jinja
    - template: jinja
    - require:
      - pkg: snmp-package

{% if 'postfix' in pillar['servers'][hostname]['roles'] %}
/etc/snmp/snmp_post_queue.sh:
  file.managed:
    - user: root
    - group: root
    - mode: 655
    - source: salt://linux-server/snmp/etc/snmp_post_queue.sh
    - require:
      - pkg: snmp-package
{% endif %}
am-vm-salt01:
    Data failed to compile:
----------
    Rendering SLS linux-server.snmp failed, render error: Undefined jinja variable; line 353 in template
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/salt/state.py", line 1929, in render_state
    rendered_sls=mods
  File "/usr/lib/python2.7/dist-packages/salt/template.py", line 69, in compile_template
    ret = render(input_data, env, sls, **render_kwargs)
  File "/usr/lib/python2.7/dist-packages/salt/renderers/jinja.py", line 42, in render
    tmp_data.get('data', 'Unknown render error in jinja renderer')
SaltRenderError: Undefined jinja variable; line 353 in template
randomfish commented 10 years ago

It was user error in my case: I forgot to add the package name to the top.sls file inside the pillar directory. base: 'home.project.internal':