On 30.11.2018 08:50, Phillip wrote:
ok: [server1.infra.sys] => (item={u'ipaddr': u'1.1.1.2', u'netmask':
u'255.255.255.0', u'bootproto': u'none', u'device': u'ens192', u'type':
u'Ethernet', u'gateway': u'1.1.1.250'}) => {"changed": false,
"checksum":
"fdecaa26f260854783e24a79c166604488713c90", "gid": 0, "group": "root",
"item": {"bootproto": "none", "device": "ens192", "gateway":
"1.1.1.250",
"ipaddr": "1.1.1.2", "netmask": "255.255.255.0", "type": "Ethernet"},
"mode": "0644", "owner": "root", "path":
"/etc/sysconfig/network-scripts/ifcfg-ens192", "secontext":
"system_u:object_r:net_conf_t:s0", "size": 229, "state": "file", "uid":
0}
fatal: [server1.infra.sys]: FAILED! => {"msg": "The task includes an
option
with an undefined variable. The error was: 'dict object' has no
attribute
'device'\n\nThe error appears to have been in
'/opt/ansible/playbooks/roles/basic/tasks/main.yml': line 36, column 3,
but
may\nbe elsewhere in the file depending on the exact syntax
problem.\n\nThe
offending line appears to be:\n\n\n- name: Update primary interface IP
information\n ^ here\n\nexception type: <class
'ansible.errors.AnsibleUndefinedVariable'>\nexception: 'dict object'
has no
attribute 'device'"}
So you are running this task twice, so you with_items aka interfaces
variable contain at least to list elements.
This is what I have written in to the host file in the inventory
directory/./host_vars/server1.infra.sys:
# HOST INTERFACES DEFINITIONS
interfaces:
- device: ens192
type: Ethernet
bootproto: none
ipaddr: 1.1.1.2
netmask: 255.255.255.0
gateway: 1.1.1.250
My suspicion is that this is not the whole content of the file, because
your output indicate that you have at least one more element in this
list.
As seen, there is device configured and in the error msg from Ansible
it
isn't happy because the variable 'device' isn't set.
This is a part of /opt/ansible/playbooks/roles/basic/tasks/main.yml
- name: Update primary interface IP information
template:
src: roles/basic/templates/ifcfg.j2
dest: "/etc/sysconfig/network-scripts/ifcfg-{{item.device}}"
owner: root
group: root
mode: 0644
with_items: "{{ interfaces }}"
when: interfaces is defined
notify: restart network
So why should I get an error from Ansible when the changes have been
made
successfully?
The first element in the list interfaces goes thru OK but not the second
one.
If you before the task that fails add this
- debug: var=interfaces
you can verify that you variable actually contain more than one list
element.
--
Kai Stian Olstad
--
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/620f62a5995ea3b6223ac400a92ae5be%40olstad.com.
For more options, visit https://groups.google.com/d/optout.