Hi Kai
Ok, with the new modification in main.yml with:
- debug: var=interfaces
- meta: end_play
does it works as designed.
Here the output of the debug:
ok: [server1.infra.sys] => {
"interfaces": [
{
"bootproto": "none",
"device": "ens192",
"gateway": "1.1.1.250",
"ipaddr": "1.1.1.2",
"netmask": "255.255.255.0",
"type": "Ethernet"
},
{
"aliases": "ansible",
"fqdn": "ansible.infra.sys",
"host": "1.1.1.3"
}
]
}
This is the complete configuration of the interfaces and additional
services:
fqdn: 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
# /etc/hosts ENTRIES
- host: 1.1.1.3
fqdn: ansible.infra.sys
aliases: "ansible"
ntp_servers:
- server: 1.1.1.5
- server: 1.1.1.6
ntp_interface: ens192
So when I understand the debug correct, device is set so it shouldn't be
any problem. Or do I need so specify anything else with device on an other
part of the configuration?
Am Freitag, 30. November 2018 09:13:16 UTC+1 schrieb Kai Stian Olstad:
>
> 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/e865f480-4277-48d1-9d8d-a59aa6564ced%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.