总结

总结

总结

如何让 systemd 单元依赖来自另一台主机的网络服务?

问题

我的 sambaserver 上的 samba 服务无法启动,因为该主机的启动速度比 dns2.ipa.example.com 更快。

[root@sambaserver|/root]# systemctl status smb -l
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2017-10-03 22:27:35 EDT; 2 days ago
  Process: 1752 ExecStart=/usr/sbin/smbd $SMBDOPTIONS (code=exited, status=1/FAILURE)
 Main PID: 1752 (code=exited, status=1/FAILURE)
   Status: "Starting process..."

Oct 03 22:27:35 sambaserver.ipa.example.com smbd[1752]:   failed to bind to server ldaps://dns1.ipa.example.com ldaps://dns2.ipa.example.com with dn="[Anonymous bind]" Error: Local error
Oct 03 22:27:35 sambaserver.ipa.example.com smbd[1752]:           (unknown)
Oct 03 22:27:35 sambaserver.ipa.example.com smbd[1752]: [2017/10/03 22:27:35.669369,  0, pid=1752] ipa_sam.c:4507(pdb_init_ipasam)
Oct 03 22:27:35 sambaserver.ipa.example.com smbd[1752]:   Failed to get base DN.
Oct 03 22:27:35 sambaserver.ipa.example.com smbd[1752]: [2017/10/03 22:27:35.669405,  0, pid=1752] ../source3/passdb/pdb_interface.c:180(make_pdb_method_name)
Oct 03 22:27:35 sambaserver.ipa.example.com smbd[1752]:   pdb backend ipasam:ldaps://dns1.ipa.example.com ldaps://dns2.ipa.example.com did not correctly init (error was NT_STATUS_UNSUCCESSFUL)
Oct 03 22:27:35 sambaserver.ipa.example.com systemd[1]: smb.service: main process exited, code=exited, status=1/FAILURE
Oct 03 22:27:35 sambaserver.ipa.example.com systemd[1]: Failed to start Samba SMB Daemon.
Oct 03 22:27:35 sambaserver.ipa.example.com systemd[1]: Unit smb.service entered failed state.
Oct 03 22:27:35 sambaserver.ipa.example.com systemd[1]: smb.service failed.

这些设备是物理的,并且很旧,因此使用这些特定的主机时,有没有办法让系统单元 smb.service 等待 ldaps://dns2.ipa.example.com 的网络服务?

我想我可以尝试编写一个包装脚本并将其放入执行开始前字符串,但是看起来并不像它应该的那样干净。

如何让我的 systemd 单元文件依赖网络上另一台主机的服务(或 systemd 单元)?

答案1

不,你不能干净利落地做到这一点。相反,在 smb.conf 中增加“ldap 连接超时=”超时,这样如果无法建立连接,samba 需要更长的时间才能失败。

相关内容