2017-10-01 20 views
0

フレンド。別のユニットを正常に完了した後にユニットを実行するように指示します。

私は、DCOSクラスタをインストールして設定するためにcloud-configを使用します。

通常、「agentinstall.service」サービスの完了には5分かかります。

「agentconfig.service」が完了した後でのみ、「agentconfigure.service」を実行するようにsystemdに指示できますか

#cloud-config 
coreos: 
    units: 
    - name: "agentinstall.service" 
     command: "start" 
     content: | 
     [Unit] 
     Description=agent_setup 
     After=network.target 

     [Service] 
     Type=simple 
     User=root 
     WorkingDirectory=/tmp 
     ExecStartPre=/bin/curl -o /tmp/dcos_install.sh http://bootstapnode-0.dev.myztro.internal:9090/dcos_install.sh 
     ExecStartPre=/bin/chmod 755 dcos_install.sh 
     ExecStart=/bin/bash dcos_install.sh slave 

     [Install] 
     WantedBy=multi-user.target 
    - name: "agentconfigure.service" 
     command: "start" 
     content: | 
     [Unit] 
     Description=agent_config 
     After=agentinstall.service 

     [Service] 
     Type=simple 
     User=root 
     WorkingDirectory=/opt/mesosphere/etc/ 
     ExecStartPre=/bin/echo "MESOS_ATTRIBUTES=cluster:uploader" >> /opt/mesosphere/etc/mesos-slave-common 
     ExecStartPre=/bin/rm -f /var/lib/mesos/slave/meta/slaves/latest 
     ExecStart=/usr/bin/systemctl restart dcos-mesos-slave 

     [Install] 
     WantedBy=multi-user.target 

ありがとうございます。

+0

は、私はそれは、システム構成やインストールについてですので、オフトピックとして、この質問を閉じるために投票しています)(sd_notify程度 here同じ読む詳細を読みますプログラミングではありません。そのような質問は、unix.stackexchange.comに最適です。 – Rob

答えて

0

これは、After/Beforeキーワードを使用するシステムでは非常に可能です。 あなたは、agentconfigure.serviceでは以下 ようなものを使用する通常Afterは依存サービスが与えられたサービスの開始後に開始されることを保証

After=agentinstall.service 

命令

の下に提供することができます。あなたは agentinstall.serviceが完了するまでに5分かかるので、あなたは agentinstall.serviceに通知=タイプを追加する必要があり、そしてあなたの処理が行われたときに、アプリケーションから sd_notify()を行うことに言及しているので

。 はこのsystemdには、次のサービスを開始するものに基づいてすなわちagentconfigure.service

は、here

関連する問題