diff --git a/hosts.offline b/hosts.offline index f8ee179..88ba727 100644 --- a/hosts.offline +++ b/hosts.offline @@ -20,6 +20,8 @@ koji0.pyrocufflink.blue [koji-web] koji0.pyrocufflink.blue +[networkd] + [pyrocufflink] koji0.pyrocufflink.blue taiga0.pyrocufflink.blue diff --git a/roles/systemd-networkd/defaults/main.yml b/roles/systemd-networkd/defaults/main.yml new file mode 100644 index 0000000..7829ac6 --- /dev/null +++ b/roles/systemd-networkd/defaults/main.yml @@ -0,0 +1,3 @@ +networkd_links: [] +networkd_devices: [] +networkd_networks: [] diff --git a/roles/systemd-networkd/handlers/main.yml b/roles/systemd-networkd/handlers/main.yml new file mode 100644 index 0000000..1523d58 --- /dev/null +++ b/roles/systemd-networkd/handlers/main.yml @@ -0,0 +1,2 @@ +- name: reload networkd + command: networkctl reload diff --git a/roles/systemd-networkd/tasks/main.yml b/roles/systemd-networkd/tasks/main.yml new file mode 100644 index 0000000..d2761b4 --- /dev/null +++ b/roles/systemd-networkd/tasks/main.yml @@ -0,0 +1,34 @@ +- name: ensure systemd-networkd is installed + package: + name: systemd-networkd + state: present + tags: + - install + +- name: ensure systemd network configuration directory exists + file: + path: /etc/systemd/network + mode: '0755' + state: directory + +- name: ensure systemd network links are configured + template: + src: network.j2 + dest: /etc/systemd/network/{{ item.name }}.link + mode: '0644' + loop: '{{ networkd_links }}' + notify: reload networkd +- name: ensure systemd network devices are configured + template: + src: network.j2 + dest: /etc/systemd/network/{{ item.name }}.netdev + mode: '0644' + loop: '{{ networkd_devices }}' + notify: reload networkd +- name: ensure systemd networks are configured + template: + src: network.j2 + dest: /etc/systemd/network/{{ item.name }}.network + mode: '0644' + loop: '{{ networkd_networks }}' + notify: reload networkd diff --git a/roles/systemd-networkd/templates/network.j2 b/roles/systemd-networkd/templates/network.j2 new file mode 100644 index 0000000..a199b8d --- /dev/null +++ b/roles/systemd-networkd/templates/network.j2 @@ -0,0 +1,12 @@ +{% for section in item if section != "name" %} +[{{ section }}] +{% for key in item[section] %} +{% if item[section][key] is not iterable or item[section][key] is string %} +{{ key }}={{ item[section][key] }} +{% else %} +{% for value in item[section][key] %} +{{ key }}={{ value }} +{% endfor %} +{% endif %} +{% endfor %} +{% endfor %} diff --git a/systemd-networkd.yml b/systemd-networkd.yml new file mode 100644 index 0000000..f5418ea --- /dev/null +++ b/systemd-networkd.yml @@ -0,0 +1,6 @@ +- hosts: networkd + roles: + - role: systemd-networkd + tags: + - networkd + - netconfig