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

Utp*_*esh 5 systemd systemd-timer

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

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

是否可以指示systemdagentconfigure.service 仅在 agentinstall.service完成后执行?

#云配置
核心:
  单位:
    - 名称:“agentinstall.service”
      命令:“开始”
      内容: |
        [单元]
        描述=代理设置
        之后=网络.目标

        [服务]
        类型=简单
        用户=root
        工作目录=/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 从站

        [安装]
        WantedBy=多用户.target
    - 名称:“agentconfigure.service”
      命令:“开始”
      内容: |
        [单元]
        描述=代理配置
        之后=agentinstall.service

        [服务]
        类型=简单
        用户=root
        工作目录=/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 重新启动 dcos-mesos-slave

        [安装]
        WantedBy=多用户.target

谢谢。

the*_*rpy 3

我不知道如何使用 systemd 来完成此任务,因为我认为它只关心单元的启动和运行。例如,您可以使用After=强制一个单元仅在指定单元启动后启动,或者两个单元并行启动。

Wants=将导致指定的单元并行启动(如果所需的单元尚未启动/活动),而不是您想要的。

Requires=After=如果与on结合使用agentconfigure.service,将确保在处于活动状态(“忙”)agentconfigure.service之后启动。agentinstall.service现在,您可以有一个agentconfigure.service等待循环,例如最多 5 分钟,并agentinstall.service在继续实际工作之前定期检查是否完成。我看到的唯一选择。

编辑:我认为更好的另一个选择......安装成功时agentinstall.service启动,然后退出。agentconfigure.service