成功完成另一个单元后,指示执行单元

时间:2017-10-01 17:34:28

标签: systemd coreos dcos systemctl aws-cloud-config

友。

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

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

是否可以指示systemd执行" agentconfigure.service"仅限于#34; agentinstall.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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

After=agentinstall.service

通常After确保在启动给定服务后启动相关服务。

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

详细了解here 阅读sd_notify()here