systemd.network(5) 从文件或环境中获取值?

systemd.network(5) 从文件或环境中获取值?

我知道*.service单位支持Environment=key=valEnvironmentFile=fname条目,但文件似乎*.network不支持。

Address是否有其他方法可以从不同的文件或环境变量中获取具体的值?

例如结果会是这样的:

# /etc/some/conf
192.0.2.3
# some.network
[Match]
Name=some

[Network]
# (! invalid !) example of desired effect
Address=$(cat /etc/some/conf)

答案1

Systemd-networkd 不支持从外部文件加载数据(至少在 2020 年 2 月使用 systemd 244 之前),因此您能做的最好的事情就是编写一个以.service任何方式同步密钥的文件,并添加RequiredBy=systemd-networkd.serviceBefore=systemd-networkd.service以确保它执行在正确的时间工作。

答案2

systemd.网络人:

这些文件是从位于系统网络目录、 易失性运行时网络目录 和本地管理网络目录中 .network的文件中读取的。所有配置文件都按词法顺序集中排序和处理,无论它们所在的目录如何。但是,具有相同文件名的文件会相互替换。中的文件具有最高优先级,中的文件优先于 中的同名文件。如果需要,这可用于使用本地文件覆盖系统提供的配置文件。作为一种特殊情况,空文件(文件大小为 0)或具有相同名称的符号链接指向完全禁用配置文件(它被“屏蔽”)。/usr/lib/systemd/network/usr/local/lib/systemd/network/run/systemd/network/etc/systemd/network/etc/run/usr/dev/null

[...]

[Address]”部分接受以下键。指定多个“ [Address]”部分来配置多个地址。

相关内容