diff --git a/roles/network/handlers/main.yml b/roles/network/handlers/main.yml index be3f0ab..dd99c44 100644 --- a/roles/network/handlers/main.yml +++ b/roles/network/handlers/main.yml @@ -3,3 +3,8 @@ - name: restart network command: /bin/sh /etc/netstart when: ansible_os_family == "OpenBSD" + +- block: + - name: reload network manager connections + command: nmcli c reload + when: ansible_os_family == "RedHat" diff --git a/roles/network/tasks/RedHat.yml b/roles/network/tasks/RedHat.yml index ed97d53..9578883 100644 --- a/roles/network/tasks/RedHat.yml +++ b/roles/network/tasks/RedHat.yml @@ -1 +1,17 @@ --- +- name: get interface uuid + command: + cmd: nmcli -f "DEVICE,UUID,NAME" c show + changed_when: false + check_mode: false + register: interface_uuid + +- name: create ethernet interface configurations + template: + src: ifcfg-eth.j2 + dest: "/etc/sysconfig/network-scripts/ifcfg-{{ item.device }}" + mode: 0644 + owner: root + group: "{{ ansible_wheel }}" + notify: reload network manager connections + with_items: "{{ network_interfaces }}" diff --git a/roles/network/templates/ifcfg-eth.j2 b/roles/network/templates/ifcfg-eth.j2 new file mode 100644 index 0000000..9ab6da9 --- /dev/null +++ b/roles/network/templates/ifcfg-eth.j2 @@ -0,0 +1,35 @@ +DEVICE="{{ item.device }}" +{% for line in interface_uuid.stdout_lines %} +{% if line.split()[0] == item.device %} +UUID="{{ line.split()[1] }}" +{% elif line.split()[2] == item.device %} +UUID="{{ line.split()[1] }}" +{% endif %} +{% endfor %} +{% if item.mac is defined %} +HWADDR="{{ item.mac }}" +{% elif lookup('vars', 'ansible_' + item.device, default=undefined) is undefined %} +HWADDR="{{ lookup('vars', 'ansible_' + item.device + '["macaddress"]') }} +{% endif %} +ONBOOT=yes +{% if item.proto is not defined or item.proto == 'dhcp' %} +NETBOOT=yes +BOOTPROTO=dhcp +{% elif item.proto == 'static' %} +IPADDR="{{ item.ipaddr }}" +NETMASK="{{ item.netmask }}" +{% if item.gateway is defined %} +GATEWAY="{{ item.gateway }}" +{% endif %} +{% elif proto == 'none' %} +BOOTPROTO=none +{% endif %} +{% if item.ip6addr is defined and item.ip6addr != 'none' %} +IPV6INIT=yes +{% if item.ip6addr != 'auto' %} +IPV6ADDR="{{ item.ip6addr }}" +{% endif %} +{% else %} +IPV6INIT=no +{% endif %} +TYPE=Ethernet