我编写了一个 systemd 单元,它使用 PassEnvironment 启动一个可执行脚本,将一组环境变量传递给脚本。其中一个变量是从具有换行符的文件中读取的证书,它根本没有传递给脚本:打印它我没有得到任何内容。如果我删除换行符,那么变量会正确传递。
我想不出另一种将变量传递给脚本的方法:一切都在 docker 容器中运行,我开始定义包含证书的环境变量的值,该值是传递给 systemd 的容器进程,而后者又是容器进程将其传递给脚本。我无法将证书文件挂载为 docker 机密,因为一切都将在 Gitlab CI 中运行,因此我只能使用 env 变量来传递机密。而且出于安全原因,我也不能将证书放在图像中。
那么如何让 systemd 直接将带有换行符的 env 变量传递给脚本呢?我在 CentOS 容器中使用 systemd 219。