Hi all,

I have been avoiding to upgrade Ansible 1.9.4 on Centos 6 for the past few 
months, however since the upgrade project is again on my desk, I am 
actively working through the warnings and errors e.g.  substituting 
include: statements in tasks with import_tasks:, editing playbooks and 
removing duplicate when: statements and so on.

There is one issue that I cannot resolve, it seems. I maintain a list of 
vars for each server in the event that I need to rebuild the server ( NODES 
file below ). It essentially is a list of settings for each server like 
sshd extra options, interface and cacti settings and so on. The issue is 
that in 2.4 I seem not to be able to run this playbook as I was able in 
1.9.4. I see that jinja2 in when statement gets a warning.

Any ideas on how I would be able to run this playbook ? I am willing to 
redo the nodes file if there is a better way to do this. Looks like jinja2 
in when statements is not supported any longer ?
Thank you


Version details:

root [/etc/ansible/deployment]# rpm -q ansible
ansible-2.4.1.0-2.el6.noarch

root [/etc/ansible/deployment]# rpm -qa | egrep jinja
python-jinja2-26-2.6-3.el6.noarch
python-jinja2-2.7.2-1.el6.noarch     # <---  This was needed for filters

root [/etc/ansible/deployment]# rpm -q centos-release
centos-release-6-9.el6.12.3.x86_64




###  VARS  file ###
hname: "'{{ inventory_hostname }}'"

hostname_hostname: "{{inventory_hostname}}"
hostname_shortname: "{{inventory_hostname.split('.')[0]}}"

# remove dash from host name as Ansible cannot handle it properly in vars
hostname_mounts: "{{hostname_shortname.replace('-','')}}"
hostname_short: "{{hostname_shortname.replace('-','')}}"


### NODES  file ###
nodes:
   umsrv3s1:      # <--- short hostname
      ifconfig:       # <--- interface info
         - { iface: 'eth0', IP: '91.X.Y.Z1',   netmask: '255.255.255.0', 
gw: '91.X.Y.G1', enabled: '1'  }
      mounts:
         - {source: 'proc', target: '/proc', opts: 'defaults,hidepid=1', 
fstype: 'proc'}
      cacti:
         - { enabled: '1', tree: 'Citi1',  template: 'ucd/net SNMP Host' }
      httpd:
         - { enable: false  }
      yumextra:   # <--- extra packages for this server only
         - { packages: [ ansible-inventory-puppetdb, ansible-cmdb, 
VMware-vSphere-CLI, python-psphere, python-sphere, python-pyvmomi ] }
      sshdextra:  # <--- extra sshd options for this server
         - { name: 'MaxSessions', value: '6'}
         - { name: 'MaxStartups', value: '100:30:150'}
         # DisableForwarding added in 7.4
         - { name: 'DisableForwarding', value: 'yes'}

   umsrv3s2:
      ifconfig:
         - { iface: 'eth0', IP: '91.X.Y.Z2',   netmask: '255.255.255.0', 
gw: '91.X.Y.G1', enabled: '1'  }
      mounts:
         - {source: 'proc', target: '/proc', opts: 'defaults,hidepid=1', 
fstype: 'proc'}
      cacti:
         - { enabled: '1', tree: 'City1',  template: 'ucd/net SNMP Host' }
      yumextra:
         - { packages: [] }
      sshdextra: []
      httpd:
         - { enable: false  }
    [....]

### TASKS ###
- name: setfacts - set hostname vars
  set_fact:
    hostname_short_nodash: "{{ 
inventory_hostname.split('.')[0].replace('-','') }}"
    hostname_short: "{{inventory_hostname.split('.')[0]}}"
  tags: [ setfacts ]

- name: yum - set_fact - get list of host-specific packeges to be installed
  set_fact:
    __packages: "{{ item.packages }}"

*  with_items: nodes.{{hostname_mounts}}.yumextra  when: 
nodes.{{hostname_mounts}}.yumextra is defined*
  tags: [ setfacts, yum ]

- name: yum - echo __packages
  debug: var=__packages
  when: nodes.{{hostname_mounts}}.yumextra is defined
  tags: [ setfacts, yum ]

- name: yum - set_fact - get list of host-specific packeges to be installed
  set_fact:
    __packages: "{{ item.packages }}"
  with_items: nodes.{{hostname_mounts}}.yumextra
  when: nodes.{{hostname_mounts}}.yumextra is defined
  tags: [ setfacts, yum ]

- name: yum - echo __packages
  debug: var=__packages
  when: nodes.{{hostname_mounts}}.yumextra is defined
  tags: [ setfacts, yum ]


/usr/bin/ansible-playbook -l `hostname -f` -c local 
/etc/ansible/deployment/deployment.yml --vault-password-file .vault 
--tags=setfacts
[....]

TASK [yum - set_fact - get list of host-specific packeges to be installed] 
*********************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: nodes.{{hostname_mounts}}.yumextra is defined

fatal: [umsrv10]: FAILED! => {"failed": true, "msg": "The task includes an 
option with an undefined variable. The error was: 
'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 
'packages'\n\nThe error appears to have been in 
'/etc/ansible/deployment/tasks/setfacts.yml': line 49, column 3, but 
may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe 
offending line appears to be:\n\n# YUM #\n- name: yum - set_fact - get list 
of host-specific packeges to be installed\n  ^ here\n\nexception type: 
<class 'ansible.errors.AnsibleUndefinedVariable'>\nexception: 
'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 
'packages'"}


-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/68afff18-9f00-4851-903e-0c3cf7b2ed12%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to