Linux 如何使用';何时';带Systemd单元配置的条件

Linux 如何使用';何时';带Systemd单元配置的条件,linux,docker,systemd,coreos,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 an

如何在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,如果您希望安装单元启动,就可以启动它

但是,如果希望单元在启动时执行自己的条件求值,请参阅以获取各种标志。例如:

[Unit]
ConditionPathExists=/etc/mount-docker

将导致仅在
/etc/mount docker
存在时才装入文件系统。类似地,您可以根据在该层上运行的逻辑,决定是否从Ansible启用装载点的单元。

仅创建单元并不能说明该单元在什么时候和什么情况下被激活;这种激活是您在这里关心的问题——因此,解决方案可以很简单,只要有其他代码告诉systemd,如果您希望安装单元启动,就可以启动它

但是,如果希望单元在启动时执行自己的条件求值,请参阅以获取各种标志。例如:

[Unit]
ConditionPathExists=/etc/mount-docker

将导致仅在
/etc/mount docker
存在时才装入文件系统。类似地,您可以根据在该层运行的逻辑来决定是否从Ansible启用装载点的单元。

如果您想在CoreOS上执行无法使用
systemd
的有条件操作,他们的
云配置
工具有一个指令。使用它,您可以将bash脚本写入包含所需条件逻辑的磁盘。然后您可以创建一个启动bash脚本的
systemd
服务。bash脚本可以依次调用
systemctl start…
来启动其他
systemd
服务或挂载。

如果您想在CoreOS上执行
systemd
无法执行的有条件操作,他们的
云配置
工具有一个指令。使用它,您可以将bash脚本写入包含所需条件逻辑的磁盘。然后您可以创建一个启动bash脚本的
systemd
服务。bash脚本可以依次调用
systemctl start…
来启动其他
systemd
服务或挂载。

我还没有对单元做太多修改。。。他们是否不了解常见的测试,如[“$A”=“TRUE”]&&echo“do this”,您是否可以链接到您正在关注的CoreOS文档?我以前没有见过用于systemd配置的YAML格式。@ankit您使用什么创建此文件?它是可以接受的吗?嗯。“When”条件是一个ansible构造,而不是systemd构造。@Matt/@MarkStosberg:这不是ansible,这是在systemd单元配置中,我在其中使用dropins。我还没有摆弄过很多单位。。。他们是否不了解常见的测试,如[“$A”=“TRUE”]&&echo“do this”,您是否可以链接到您正在关注的CoreOS文档?我以前没有见过用于systemd配置的YAML格式。@ankit您使用什么创建此文件?它是可以接受的吗?嗯。“When”条件是一个ansible构造,而不是systemd构造。@Matt/@MarkStosberg:这不是ansible,这是在systemd单元配置中,我在其中使用dropins。裁判: