qDup is an agent-less, automation and coordination tool. We use it to coordinate tasks across multiple linux computers through standard ssh connections.
qDup allows for the co-ordination of many activities across multiple servers, making complex benchmarks manageable and repeatable.
The Tutorials are the best place to get started. They walk us from new to qDup to writing coordinated scripts that handle common scripting requirements in 3 tutorials:
After the tutorials, check out the How To
for more specific scenarios
qDup uses SSH, no special agents or languages required. We recommend using SSH keys to connect without passwords but user passwords can be included in the YAML files.
The main workflow is broken into 3 stages: setup, run, cleanup
Setup scripts are executed sequentially with a shared SSH session to help capture all the changes and ensure a consistent state for the run stage. Any environment changes to the setup SSH session will be copied to all the run stage sessions.
Run scripts are executed in parallel and will start with the environment changes from the setup stage.
Cleanup scripts are executed sequentially with a shared SSH session to ensure a consistent ending state.
They occur after any pending queue-download
from the run stage so it is safe to cleanup anything left on the hosts
-
Download the latest uber-jar release
-
Add you private key to the target servers
cat ~/.ssh/id_rsa.pub | ssh user@server 'cat >> .ssh/authorized_keys'
Tip
|
For more information on how to configure ssh, please refer to ssh-config |
-
Create a simple test script
cat > helloworld.yaml << 'EOF' scripts: tryme: - sh: whoami - sh: date - sh: echo ${{message}} hosts: server: user@server_name roles: test: hosts: - server run-scripts: - tryme states: message: Hello, qDup! EOF
Check the qdup documentation for the structure of the YAML file.
-
Run the script
java -jar qDup-uber.jar -C -B /tmp qdup.yaml
-
Run again with a different message
java -jar qDup-uber.jar -C -B /tmp -S message="Greetings, qDup!" qdup.yaml
Check the jar documentation on what else can be done with the uber jar.
qDup scripts contain the following sections;