Systemdサービスはリモートsystemdサービスに依存できますか?

Systemdサービスはリモートsystemdサービスに依存できますか?

service依存関係を作成しようとしています。離れてシステムサービス。そのような奇妙なことを行うための「標準的な」方法はありますか?ユースケースは、起動時にリモートエンドポイントを準備する必要があるいくつかのレガシーソフトウェアです。

私は次のようなものを使用できることを知っています。これを待っているExecStartPre特定のリモートTCPポートが利用可能になるまでサービスを確認/待機します(そしてリモート.socketで簡単なデバイスを作成することもできます)。しかし、これはあまりにも過度のようです。 systemd自体が他のリモートsystemdと通信する方法はありますか?

答え1

ExecStartPre=systemctl --host=service-user@remote-host start remote-serviceローカルサービスファイルのExecStartPreで同様のものを使用することもできます。

答え2

リモートsystemdサービスがリモートサーバーにポートを開くと、ローカルsystemdサービスでそのポートが開いていることを確認できます。 bashでは、次のようなものを書くことができます。

while ! echo > /dev/tcp/remoteserver/someport; do
  echo "waiting for remote service..."
  sleep 5s
done

もちろん、ネットワークが復元されるまでこのサービスを開始しないようにsystemdに指示する必要があります。https://wiki.archlinux.org/index.php/Systemd#Running_services_after_the_network_is_up

関連情報