2017-03-07 91 views
0

如何在CoreOS上對systemd單元使用'when'或'if'條件語句?如何在Systemd單元配置條件下使用'when'

例如:我想安裝一個目錄只有一個變量被設置爲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

我還沒有擺弄很多單位......他們不明白像 [「$ A」=「TRUE」] &&回聲「做這個」的常見測試 – louigi600

+0

你可以鏈接到你正在關注的CoreOS文檔?我以前沒有見過用於systemd配置的YAML格式。 –

+0

@ankit你用什麼來創建這個文件?它是否可靠? – Matt

回答

1

僅僅創建一個單元不沒有說明何時以及在該單位何時啓動;激活就是你在乎的 - 所以一個解決方案可以像其他代碼一樣簡單地告訴systemd如果你希望啓動安裝單元在手邊。

但是,如果您希望設備在啓動時執行自己的條件評估,請參閱man systemd.unit以獲取有關各種標誌的信息。例如:

[Unit] 
ConditionPathExists=/etc/mount-docker 

將導致如果/etc/mount-docker存在僅被安裝在文件系統。同樣,您可以根據在該層運行的邏輯決定是否從Ansible啓用安裝點的單位。

0

如果你想做一些有條件的事情,CoreOS上的systemd無法完成,他們的cloud-config工具有一個write_file指令。使用它,你可以寫一個bash腳本到包含你想要的條件邏輯的磁盤。然後,您可以創建一個啓動該bash腳本的systemd服務。 bash腳本可以反過來撥打systemctl start ...以啓動其他systemd服務或掛載。

相關問題