2017-03-07 10 views
0

systemdのCoreOSで 'when'または 'if'条件文を使用するにはどうすればよいですか?例えば'when'をSystemdユニットの条件付きで使用する方法

:私はそうのような(と言うA == "True"

変数が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

単に一単位を作成することはときに下に記載されておられませんそのユニットがどのような状況で活性化されるか;その活性化はあなたがここで気にしていることです。そうすれば、他のコードでシステムを起動してマウントしておくことができれば簡単です。

起動時にユニットが独自の条件評価を実行するようにするには、目的のためにさまざまなフラグのman systemd.unitを参照してください。たとえば:

[Unit] 
ConditionPathExists=/etc/mount-docker 

/etc/mount-dockerが存在する場合、ファイルシステムにのみマウントする原因となります。同様に、そのレイヤーで実行されているロジックに基づいて、マウントポイントのユニットを「有効」から有効にするかどうかを決定できます。

0

CoreOSでsystemdで実行できない条件を実行する場合は、cloud-configツールにwrite_fileという指令があります。これを使用して、必要な条件付きロジックを含むbashスクリプトをディスクに書き込むことができます。その後、bashスクリプトを起動するサービスsystemdを作成することができます。 bashスクリプトは、他の呼び出しをsystemctl start ...にして、他のsystemdサービスまたはマウントを開始することができます。

関連する問題