linux - 如何在 Systemd Unit 配置中使用 'when' 条件

标签 linux docker systemd coreos

我如何在 CoreOS 上对 systemd 单元使用“when”或“if”条件语句?

例如:我只想在变量设置为 True 时挂载目录(比如 A == "True")

就像:

- name: var-lib-docker.mount
  contents: |
    [Unit]
    Description=Mount ephemeral to /var/lib/docker
    [Mount]
     if (A == "true") # This part I'm not sure where and how to put.
       What=/dev/xvd1
       Where=/var/lib/docker
       Type=ext4

最佳答案

仅仅创建一个单元并没有描述该单元何时以及在什么情况下被激活;激活是你在这里关心的——所以一个解决方案可以很简单,只要让其他代码告诉 systemd 启动手头的挂载单元,如果你想让它启动。

但是,如果您希望该单元在启动时执行自己的条件评估,请参阅 man systemd.unit以各种旗帜为目的。例如:

[Unit]
ConditionPathExists=/etc/mount-docker

将导致文件系统仅在 /etc/mount-docker 存在时才被挂载。同样,您可以根据在该层运行的逻辑来决定是否从 Ansible 为挂载点启用单元。

关于linux - 如何在 Systemd Unit 配置中使用 'when' 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42655361/

相关文章:

docker - Docker 中的初始化层

linux - 创建新的 systemd 服务时,什么时候需要将选项 RemainAfterExit 设置为真?

docker - 我们如何设置docker容器在重启和失败时重启?

如果 Linux 内核模块不使用任何物理硬件,它可以使用 UIO 吗?

linux - 如何在内核模块中访问/dev/shm 下由用户空间进程创建的 tmpfs 文件?

docker - Windows Server Containers 域帐户身份验证

linux - 哪个是PID1 :/sbin/init or systemd

linux - 用于检查进程是否正在运行的 Shell 脚本

linux - 打开一个新的终端会产生一个新的 shell 吗?

找不到 Docker 滑行