The Virtual Machine has two interfaces, but only one is connected to a network. How can I connect the second one?
To check the status of the networks with NetworkManagers Command Line Interface (nmcli) run:
$ sudo nmcli device DEVICE TYPE STATE CONNECTION eth0 ethernet connected System eth0 eth1 ethernet disconnected -- lo loopback unmanaged --
To bring it up manually:
$ sudo nmcli connection add type ethernet ifname eth1 con-name ethernet-eth1 Connection 'ethernet-eth1' (a13aeb2c-630f-4de6-b735-760264927263) successfully added.
To Automate the same thing via Ansible, we can use the command: module, but that will execute every time unless we check that the interface has an IP address. If it does; we want to skip it. We can check that using the predfined facts variables. Each interface has a variable in the form of ansible_interface, which is a dictionary containing details about the host. Here is what my host has for the interfaces:
"ansible_eth0": { "active": true, "device": "eth0", "ipv4": { "address": "192.168.52.4", "netmask": "255.255.255.0", "network": "192.168.52.0" }, "ipv6": [ { "address": "fe80::f816:3eff:fed0:510f", "prefix": "64", "scope": "link" } ], "macaddress": "fa:16:3e:d0:51:0f", "module": "virtio_net", "mtu": 1500, "promisc": false, "type": "ether" }, "ansible_eth1": { "active": true, "device": "eth1", "macaddress": "fa:16:3e:38:31:71", "module": "virtio_net", "mtu": 1500, "promisc": false, "type": "ether" },
You can see that, while eth0 has an ipv4 section, eth1 has no such section. Thus, to gate the playbook task on the present of the variable, use a when clause.
Here is the completed task:
- name: Add second ethernet interface command: nmcli connection add type ethernet ifname eth1 con-name ethernet-eth1 when: ansible_eth1.ipv4 is not defined
Now, there is an Ansible module for Network Manager, but it is in 2.0 version of Ansible which is not yet released. I want this using the version of Ansible I (and my team) have installed on Fedora 22. Once 2.0 comes out, many of these “one-offs” will use the core modules.
I would be fantastic if nmcli module could (pre)add wireless connections to specific SSIDs. Currently it’s doesn’t yet.