Title: How to parallelize Drist
Author: Solène
Date: 06 February 2019
Tags: drist automation unix
Description: 

This article will show you how to make drist faster by using it on
multiple
servers at the same time, in a correct way. 

[What is
drist?](https://dataswamp.org/~solene/2018-11-29-drist-intro.html)

It is easily possible to parallelize drist (this works for everything
though)
using Makefile. I use this to deploy a configuration on my servers at
the same
time, this is way faster.

A simple BSD Make compatible Makefile looks like this:

    SERVERS=tor-relay.local srvmail.tld srvmail2.tld
    ${SERVERS}:
            drist $*
    install: ${SERVERS}
    .PHONY: all install ${SERVERS}

This create a target for each server in my list which will call drist.
Typing
`make install` will iterate over `$SERVERS` list but it is so possible
to use
`make -j 3` to tell make to use 3 threads. The output may be mixed
though.

You can also use `make tor-relay.local` if you don't want make to
iterate over
all servers. This doesn't do more than typing `drist tor-relay.local`
in the
example, but your Makefile may do other logic before/after.

If you want to type `make` to deploy everything instead of `make
install` you
can add the line `all: install` in the Makefile.

If you use GNU Make (gmake), the file requires a small change:

The part `${SERVERS}:` must be changed to `${SERVERS}: %:`, I think
that gmake
will print a warning but I did not succeed with better result. If you
have the
solution to remove the warning, please tell me.

If you are not comfortable with Makefiles, the .PHONY line tells *make*
that
the targets are not valid files.

Make is awesome!