cloud-config を使用して DCOS クラスターをインストールして構成します。
通常、agentinstall.service
サービスの完了には5分かかります。
systemdに実行を指示することは可能ですか?agentconfigure.service
その後 agentinstall.service
十分?
#cloudconfig コア: 単位: - 名前: "agentinstall.service" コマンド:「スタート」 内容:| [単位] 説明=プロキシ設定 以降 = network.target [提供する] タイプ=シンプル ユーザー=ルート 作業ディレクトリ=/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 スレーブ [インストールする] WantedBy =マルチユーザー。ターゲット - 名前: "agentconfigure.service" コマンド:「スタート」 内容:| [単位] 説明 = プロキシの設定 以降=agentinstall.service [提供する] タイプ=シンプル ユーザー=ルート 作業ディレクトリ=/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 dcos-mesos-slave 再起動 [インストールする] WantedBy =マルチユーザー。ターゲット
ありがとうございます。
答え1
systemdを使用してこれを行う方法は、デバイスの起動と実行にのみ興味があると思ったからです。たとえば、After=
指定されたデバイスが起動した後にのみ1つのデバイスを強制的に起動したり、2つのデバイスを並列に起動したりできます。
Wants=
目的のデバイスではなく、指定されたデバイスが並列に起動するようにします(必要なデバイスがまだ起動/アクティブ化されていない場合)。
Requires=
After=
onと一緒に使用すると、agentconfigure.service
有効になった後( "busy")起動しますagentconfigure.service
。これで最大5分間待機ループがあり、agentinstall.service
実際の作業を続行する前にagentconfigure.service
定期的に完了するかどうかを確認できます。agentinstall.service
私が見る唯一のオプション。
編集:私が考えるもう一つのオプションは、インストールが成功したら実行してからagentinstall.service
終了agentconfigure.service
することです。
答え2
/bin/bash dcos_install.sh slave
コマンドの後に実行しますか?
そのコマンドを使用してサービスをType=oneshot
。
echo
@JdeBPは、あなたのコマンドがシェルリダイレクトを使用しようとしていることを指摘するように依頼しました。これはうまくいきません。。
答え3
systemd 249、2021年7月リリース、これを正確に実行する新しい依存関係タイプのサポートが追加されました。これOnSuccess
により、ユニットが完了したときに実行するユニットを指定できます。
したがって、ホストのシステムが249以上の場合は、次のものがagentinstall.service
必要です。
[Unit]
Description=agent_setup
After=network.target
OnSuccess=agentconfigure.service
これでこれが可能になり、タスクがsystemctl start agentinstall.service
完了するたびにagentconfigure.service
自動的に開始されます。
OnFailure=
完了のために - 同じ操作を実行しますが、デバイスが失敗したときにのみトリガーされる依存関係もあります。 2013年にリリースされたsystemd v201に導入されました。