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