-
Notifications
You must be signed in to change notification settings - Fork 1
/
systemd-link.sls
57 lines (49 loc) · 1.63 KB
/
systemd-link.sls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{%- set netifaces = pillar['network']['interfaces'] %}
rm -f /etc/systemd/network/[a-z]*.link:
cmd.run:
- onlyif:
- ls /etc/systemd/network/[a-z]*.link
{% for iface in netifaces recursive %}
### Ethernet begin
{% if iface.type == 'eth' %}
{% set filename = '10-'+iface.name+'.link' %}
{% set filepath = '/etc/systemd/network/'+filename %}
{% set ifudev = salt['udev.info']('/sys/class/net/'+iface.name) %}
{% if ifudev.E.SUBSYSTEM == 'net' %}
# Bug https://github.com/saltstack/salt/issues/34236 workaround begin
ensure {{ filename }} exists with ini sections:
cmd.run:
- name: echo '[Match]' > {{ filepath }}
- unless:
- test -f {{ filepath }}
- require_in:
- ini: {{ filepath }}
- require:
- file: /etc/systemd/network
# Bug workaround end
{{ filepath }}:
ini.options_present:
- sections:
Match:
{%- if ifudev.E.ID_PATH is defined %}
Path: "{{ ifudev.E.ID_PATH }}"
{%- else %}
MACAddress: "{{ grains['hwaddr_interfaces:'+ifudev.E.INTERFACE] }}"
{%- endif %}
Link:
{%- if iface.mtu is defined %}
MTUBytes: "{{ iface.mtu }}"
{%- else %}
{%- if salt['cmd.run_stdout']("ethtool "+iface.name+"|awk '/Speed:/{print $2}'|grep -oP '\d+'", python_shell=True)|int > 5000 and grains['virtual'] == "physical" %}
MTUBytes: "9000"
{%- else %}
MTUBytes: "1500"
{%- endif %}
{%- endif %}
Name: "{{ ifudev.E.INTERFACE }}"
- watch_in:
- module: restart_systemd-networkd
{% endif %}
{% endif %}
{% endfor %}
### Ethernet end