diff --git a/roles/base/tasks/main.yml b/roles/base/tasks/main.yml index cecd1a5..166d3f4 100644 --- a/roles/base/tasks/main.yml +++ b/roles/base/tasks/main.yml @@ -61,6 +61,7 @@ include_role: name: "{{ role }}" with_items: + - network - opensmtpd - pki - psacct diff --git a/roles/network/defaults/main.yml b/roles/network/defaults/main.yml new file mode 100644 index 0000000..ce5efe5 --- /dev/null +++ b/roles/network/defaults/main.yml @@ -0,0 +1,3 @@ +--- +network_ether_interfaces: [] +network_carp_interfaces: [] diff --git a/roles/network/handlers/main.yml b/roles/network/handlers/main.yml new file mode 100644 index 0000000..eb0412f --- /dev/null +++ b/roles/network/handlers/main.yml @@ -0,0 +1,4 @@ +- block: + - name: restart network + command: /bin/sh /etc/netstart + when: ansible_os_family == "OpenBSD" diff --git a/roles/network/tasks/OpenBSD.yml b/roles/network/tasks/OpenBSD.yml new file mode 100644 index 0000000..983ba92 --- /dev/null +++ b/roles/network/tasks/OpenBSD.yml @@ -0,0 +1,37 @@ +--- + +- name: create ethernet interface configurations + template: + src: hostname.if.j2 + dest: "/etc/hostname.{{ item.device }}" + mode: 0600 + owner: root + group: "{{ ansible_wheel }}" + with_items: "{{ network_ether_interfaces }}" + notify: restart network + +- block: + - name: create carp interface configurations + template: + src: hostname.carp.j2 + dest: "/etc/hostname.carp{{ item.vhid }}" + mode: 0600 + owner: root + group: "{{ ansible_wheel }}" + with_items: "{{ network_carp_interfaces }}" + notify: restart network + - name: enable carp preempt + sysctl: + name: net.inet.carp.preempt + value: 1 + when: network_carp_interfaces != [] + +- name: set default gateway + copy: + content: "{{ network_default_gateway }}\n" + dest: /etc/mygate + mode: 0600 + owner: root + group: "{{ ansible_wheel }}" + notify: restart network + when: network_default_gateway is defined diff --git a/roles/network/tasks/RedHat.yml b/roles/network/tasks/RedHat.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/roles/network/tasks/RedHat.yml @@ -0,0 +1 @@ +--- diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml new file mode 100644 index 0000000..1812829 --- /dev/null +++ b/roles/network/tasks/main.yml @@ -0,0 +1,12 @@ +--- +- name: include os spcific tasks + include_tasks: "{{ ansible_os_family }}.yml" + +- name: create resolv.conf + template: + src: resolv.conf.j2 + dest: /etc/resolv.conf + mode: 0644 + owner: root + group: "{{ ansible_wheel }}" + when: network_dns_servers is defined diff --git a/roles/network/templates/hostname.carp.j2 b/roles/network/templates/hostname.carp.j2 new file mode 100644 index 0000000..c899d29 --- /dev/null +++ b/roles/network/templates/hostname.carp.j2 @@ -0,0 +1,20 @@ +vhid {{ item.vhid }} +pass {{ item.pass }} +carpdev {{ item.device }} +{% if item.proto is not defined or item.proto == 'static' %} +inet {{ item.ipaddr }} {{ item.netmask }} +{% elif item.proto == 'dhcp' %} +dhcp +{% elif item.proto == 'none' %} +up +{% endif %} +{% if item.ip6addr is defined %} +{% if item.ip6addr == 'auto' %} +rtsol +{% elif item.ip6addr != 'none' %} +inet6 alias {{ item.ip6addr }} {{ item.ip6netmask }} +{% endif %} +{% endif %} +{% if item.advskew is defined %} +advskew {{ item.advskew }} +{% endif %} diff --git a/roles/network/templates/hostname.if.j2 b/roles/network/templates/hostname.if.j2 new file mode 100644 index 0000000..bfec116 --- /dev/null +++ b/roles/network/templates/hostname.if.j2 @@ -0,0 +1,17 @@ +{% if item.proto is not defined or item.proto == 'static' %} +inet {{ item.ipaddr }} {{ item.netmask }} +{% elif item.proto == 'dhcp' %} +dhcp +{% elif item.proto == 'none' %} +up +{% endif %} +{% if item.ip6addr is defined %} +{% if item.ip6addr == 'auto' %} +inet6 autoconfig +{% elif ip6addr != 'none' %} +inet6 alias {{ item.ip6addr }} {{ item.ip6netmask }} +{% endif %} +{% endif %} +{% if item.postcmd is defined %} +{{ postcmd }} +{% endif %} diff --git a/roles/network/templates/resolv.conf.j2 b/roles/network/templates/resolv.conf.j2 new file mode 100644 index 0000000..0e8f587 --- /dev/null +++ b/roles/network/templates/resolv.conf.j2 @@ -0,0 +1,6 @@ +{% if network_dns_search is defined %} +search {{ network_dns_search|join(' ') }} +{% endif %} +{% for addr in network_dns_servers %} +nameserver {{ addr }} +{% endfor %}