Try nodes[hostname_mounts]["yumextra"] -Toshio
On Nov 26, 2017 7:00 PM, "George V" <[email protected]> wrote: 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 <https://groups.google.com/d/msgid/ansible-project/68afff18-9f00-4851-903e-0c3cf7b2ed12%40googlegroups.com?utm_medium=email&utm_source=footer> . For more options, visit https://groups.google.com/d/optout. -- 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/CAPrnkaS51PkjbUFZkdnchCOGX3TAj88A%3Df3t5nn95hYN5JiDWg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
