2017-10-01 3 views
0

Freunde.Instruct zum Ausführen einer Einheit nach erfolgreichem Abschluss einer anderen Einheit

Ich benutze Cloud-config zu installieren und DCOS Cluster zu konfigurieren.

Normalerweise "agentinstall.service" Service dauert 5 Minuten.

Ist es möglich, an Systemd anzuweisen, "agentconfigure.service" auszuführen NUR NACH "agentinstall.service" abgeschlossen?

#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 

Vielen Dank.

+0

Ich wähle schließen diese Frage als Wegthema gestartet werden, da es über die Systemkonfiguration und Installation ist, nicht programmieren. Eine solche Frage ist am besten für unix.stackexchange.com – Rob

Antwort

0

Dies ist sehr viel möglich mit Systemd mit After/Before Keywords. Sie so etwas wie unten In agentconfigure.service bietet unter Anweisung

After=agentinstall.service 

Normalerweise After stellt sicher, dass der abhängige Service nach dem Start von bestimmtem Dienst gestartet wird, verwenden kann.

Da Sie erwähnt, dass agentinstall.service 5 Minuten gelangen Sie zu vervollständigen, müssen so Typ hinzuzufügen = in agentinstall.service melden, und aus Ihrer Anwendung einen sd_notify() tun, wenn Ihre Verarbeitung erfolgt. Auf dieser Basis systemd wird nächsten Service dh agentconfigure.service

Lesen Sie mehr über gleiche here Lesen Sie mehr über sd_notify() here

Verwandte Themen