0

朋友们。

我使用 cloud-config 来安装和配置 DCOS 集群。

通常“agentinstall.service”服务需要 5 分钟才能完成。

是否可以仅在“agentinstall.service”完成后指示 systemd 执行“agentconfigure.service” ?

#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

谢谢你。

4

1 回答 1

0

After/Before使用关键字的 systemd 非常有可能。你可以使用类似下面的东西agentconfigure.service,提供下面的说明

After=agentinstall.service

通常After确保在启动给定服务后启动依赖服务。

由于您提到这agentinstall.service需要 5 分钟才能完成,因此您必须在中添加 Type=notify ,并在您的处理完成时agentinstall.service从您的应用程序中执行。sd_notify()基于此 systemd 将启动下一个服务,即agentconfigure.service

在此处阅读有关相同内容的更多信息在此处 阅读有关 sd_notify()的信息

于 2017-10-05T06:43:37.933 回答