[systemd-devel] systemd-networkd: How to configure network with environment variables?

Paul Menzel pmenzel+systemd-devel at molgen.mpg.de
Fri Apr 23 06:17:18 UTC 2021


Dear systemd folks,


Due to historical reasons, in our environment we have a configuration 
file with the network device name and the to be assigned IP address:

     $ more /etc/local/mxhost.conf
     MX_NETDEV=net02
     MX_IPADDR=141.14.18.X

Then a custom service unit `network.service` [1] configures the network 
with the configuration file as environment file.

     [Unit]
     Description=Network Connectivity
     DefaultDependencies=no

     [Service]
     EnvironmentFile=/etc/local/mxhost.conf
     Type=oneshot
     RemainAfterExit=yes
     ExecStart=/usr/sbin/mxnetctl start
     ExecStart=/sbin/ip addr add ${MX_IPADDR}/20 broadcast 141.14.31.255 
dev ${MX_NETDEV}
     ExecStart=/sbin/ip link set up dev ${MX_NETDEV}
     ExecStart=/sbin/ip route add default via 141.14.16.X
     ExecStop=/sbin/ip addr del ${MX_IPADDR}/20 dev ${MX_NETDEV}
     StandardOutput=syslog

     [Install]
     WantedBy=network.target

Wanting to use systemd-network but keeping local device configuration in 
`/etc/local` is there an easy way? systemd.network(5) does not say 
anything about, that environment variables could be used.

If that does not work, do you have another suggestion? Possible, but not 
nice, solutions, I came up with:

1.  Use a generator to create .network files from `/etc/local/mxhost.conf`.

2.  Convert `/etc/local/mxhost.conf` manually to 
`/etc/local/mxhost.network` and add a symbolic link from 
`/etc/systemd/network` to that file.


Kind regards,

Paul


[1]: 
https://github.molgen.mpg.de/mariux64/mxtools/blob/master/misc_systemd_units/network.service
[2]: https://www.freedesktop.org/software/systemd/man/systemd.network.html


More information about the systemd-devel mailing list