2017-10-01 7 views
0

Amis. J'utilise cloud-config pour installer et configurer le cluster DCOS.Demander d'exécuter une unité après avoir complété une autre unité avec succès

Normalement, le service "agentinstall.service" prend 5 minutes.

Est-il possible de demander à systemd d'exécuter "agentconfigure.service" UNIQUEMENT APRÈS "agentinstall.service" complété?

#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 

Merci.

+0

Je vote pour fermer cette question hors sujet, car il est sur la configuration du système et l'installation, pas de programmation. Une telle question est la meilleure pour unix.stackexchange.com – Rob

Répondre

0

Ceci est très possible avec systemd en utilisant After/Before mots-clés. vous pouvez utiliser quelque chose comme ci-dessous Dans agentconfigure.service, fournir ci-dessous instruction

After=agentinstall.service 

Habituellement After assure que le service à charge est lancé après le lancement du service donné.

Puisque vous avez mentionné que agentinstall.service prend 5 minutes pour terminer, vous devez ajouter type = notification à agentinstall.service et de votre application faire un sd_notify() lorsque votre traitement est effectué. Sur la base de cette systemd commence le service suivant à savoir agentconfigure.service

En savoir plus sur même here Lisez à propos sd_notify() here