LDAP 帐户可用后如何在启动时启动服务

LDAP 帐户可用后如何在启动时启动服务

我有一台托管 LDAP 数据库的计算机,其他计算机上的服务以该数据库的用户身份运行。由于用户帐户在本地不存在,因此当这些计算机在托管 LDAP 数据库的计算机之前启动时,服务将无法启动。

除运行 CentOS 7 的一台计算机外,所有计算机都运行 Ubuntu 14.04。是否可以使用 upstart 和 systemd 等待 LDAP 数据库可用,然后再启动某些服务?

编辑:我尝试使用 Upstart 的预启动脚本循环直到 LDAP 可用,但这不起作用。我在 Upstart 食谱中发现预启动脚本以使用“setuid”和“setgid”指定的用户和组运行。因此,预启动脚本永远不会运行,因为在 LDAP 服务在另一台计算机上运行之前,用户和组并不存在。

我也尝试指定“重生”,但这在这种情况下没有帮助。据我从 Upstart 食谱中了解到,重生仅在主脚本或可执行文件失败时才会生效。因此,该服务不会重新启动,因为该服务在运行任何脚本之前就失败了。

答案1

我假设您正在使用systemd,因此我建议您systemd根据需要修改服务文件。

Restart=标志指示服务未运行时是否应启动,具体取决于其未运行的原因。

您可以:Restart=on-failure作为示例。这样该服务将继续尝试启动,直到成功。

如果您愿意,可以在服务启动之前使用ExecStart=ExecStartPre=运行 bash 命令来确认 ldap 可用。

您可以systemd在此处找到有关服务文件的更多信息:https://www.freedesktop.org/software/systemd/man/systemd.service.html

编辑:对于Upstart(Ubuntu)来说,标志应该与标志respawn类似systemd Restart=on-failurehttps://wiki.ubuntu.com/SystemdForUpstartUsers

相关内容