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! |