Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I've got a couple python web services I'm trying to run on a Fedora 15 box. They're being run by paster, and the only difference in starting them is the config file they read.

This seems like a good fit for systemd's instantiated services, but I'd like to be able to control them as a single unit. A systemd target that requires both services seems like the way to approach that. Starting the target does start both services, but stopping the target leaves them running.

Here's the service file:

[Unit]
Description=AUI Instance on Port %i
After=syslog.target

[Service]
WorkingDirectory=/usr/local/share/aui
ExecStart=/opt/cogo/bin/paster serve --log-file=/var/log/aui/%i deploy-%i.ini        
Restart=always
RestartSec=2
User=aui
Group=aui

[Install]
WantedBy=multi-user.target

And here's the target file:

[Unit]                    
Description=AUI           
Requires=aui@5001.service
Requires=aui@5002.service
After=syslog.target   

[Install]                 
WantedBy=multi-user.target

Is this kind of grouping even possible with systemd?

share|improve this question

1 Answer 1

up vote 1 down vote accepted

Look at using the BindTo option to tie the units together. The systemd.unit(5) manual page describes it like this:

   BindTo=
       Configures requirement dependencies, very similar in style to
       Requires=, however in addition to this behaviour it also declares
       that this unit is stopped when any of the units listed suddenly
       disappears. Units can suddenly, unexpectedly disappear if a service
       terminates on its own choice, a device is unplugged or a mount
       point unmounted without involvement of systemd.

Which sounds like it should do what you want and tie one unit to the other so that whenever the master stops the slave stops as well and vice versa for starting up.

Don't forget that you can also use Before/After to specify the order in which they should start if necessary.

share|improve this answer
    
That did the trick...adding BindTo to the service definition brings them up and down in lockstep. Thanks! –  rascalking Nov 18 '11 at 15:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.