如何在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
2 回答
仅仅创建一个单元并不能描述该单元何时以及在何种情况下被激活;激活就是你在这里所关心的 - 所以一个解决方案就像让其他代码只告诉systemd启动手头的mount单元一样简单,如果你想要它 .
但是,如果您希望设备在启动时执行自己的条件评估,请参阅man systemd.unit以获取用于此目的的各种标志 . 例如:
如果
/etc/mount-docker
存在,将导致仅挂载文件系统 . 同样,您可以根据在该层运行的逻辑来决定是否从Ansible启用装载点的单元 .如果你想做一些在CoreOS上无法用
systemd
做的有条件的事情,他们的cloud-config
工具有一个write_file指令 . 使用它,您可以将bash脚本写入包含所需条件逻辑的磁盘 . 然后,您可以创建一个启动该bash脚本的systemd
服务 . bash脚本可以依次对systemctl start ...
进行其他调用以启动其他systemd
服务或挂载 .