Step-by-step installation guide and hands-on practice exercises to master distributed automation.
This tutorial is for DevOps engineers, system administrators, and infrastructure teams who want to set up Dimensigon from scratch and practice distributed orchestration. You'll need:
# Update system
$ apt-get update -y
# Install build tools
$ apt-get install -y libffi-dev libssl-dev \
autoconf build-essential python3-wheel
# Setup Python 3.6+ (if not available)
$ apt-get install -y software-properties-common
$ add-apt-repository -y ppa:deadsnakes/ppa
$ apt-get update && apt-get install -y \
python3.6 python3.6-dev python3.6-venv python3-pip
# Install firewall tools
$ apt-get install firewalld
Note: For lightweight containers, also install sudo vim for editing.
Create a dedicated system user and isolated Python environment:
# Create dimensigon user
$ useradd -s /bin/bash -m dimensigon
# Switch to dimensigon user
$ su - dimensigon
# Create virtual environment
$ python3 -m venv --prompt dimensigon venv
# Activate on login
$ echo 'source ~/venv/bin/activate' >> .bash_profile
# Install Python prerequisites
$ pip install wheel setuptools_rust
$ pip install --upgrade pip
$ pip install pyperclip # For DShell
# Edit sudoers file safely
$ sudo visudo
# Add these lines at the end:
# Dimensigon - DM Core
dimensigon ALL=(ALL) NOPASSWD:ALL
Defaults:dimensigon !requiretty
# Save and exit (Ctrl+X then Y then Enter in nano)
# Verify configuration
$ sudo -l -U dimensigon
ALL=(ALL) NOPASSWD:ALL - Run any command without password!requiretty - Allow remote command executionvisudo to edit safelySecurity: Only use NOPASSWD in isolated lab environments. Restrict in production.
The Dimensigon Python package includes both DM Core and DShell:
pip show dimensigon for version# Switch to dimensigon user if not already
$ su - dimensigon
# Install from PyPI
$ pip install dimensigon
# Verify installation
$ dimensigon --version
$ dshell --version
# Get help on any command
$ dimensigon -h
$ dshell -h
# Only run this once on the first node
$ su - dimensigon
$ dimensigon new
# Verify successful initialization
$ ls -la ~/.dimensigon/
# Start Dimensigon in foreground
$ dimensigon
# Or as daemon
$ dimensigon --daemon
# Check logs
$ tail -f ~/.dimensigon/logs/dimensigon.log
dimensigon newdimensigon joinWatch for successful startup message: "Dimensigon running on port 20194"
Generate tokens on the master, then use them to join new nodes:
# On FIRST/MASTER node, generate token
$ su - dimensigon
$ dimensigon token
Generated token: abc123def456ghi789jkl
# Or via DShell
$ dshell
root.dshell> manager token
# On ADDITIONAL nodes, repeat Steps 1-4
# Then join the dimension:
$ dimensigon join first-node abc123def456ghi789jkl
# Start the node
$ dimensigon
# List all servers in the dimension
$ dshell
root.dshell> server list
# Output:
Name | Status | Gates
node-1 | ONLINE | 2
node-2 | ONLINE | 2
node-3 | ONLINE | 2
# Check network connectivity
root.dshell> server ping -n node-2
SUCCESS: Response time 12ms
# View cluster topology
root.dshell> manager status
If a node shows OFFLINE, check network connectivity and firewall rules.
# Create test software file
$ echo "#!/bin/bash" > /tmp/my-script.sh
$ echo "echo 'Hello from node'" >> /tmp/my-script.sh
$ chmod +x /tmp/my-script.sh
# Register software in library
root.dshell> software add /tmp/my-script.sh \
-name "hello-script" -family "demos"
# Send to specific node
root.dshell> software send \
-name "hello-script" -dest /opt/scripts/ -n node-2
# Send to all nodes
root.dshell> software send \
-name "hello-script" -dest /opt/scripts/ --broadcast
Define a multi-step workflow that executes across your cluster:
# Create orchestration JSON
$ cat > hello-world.json <<'EOF'
{
"name": "hello-world",
"version": 1,
"steps": [
{
"name": "step-1",
"action_type": "shell",
"code": "echo 'Hello from {{server_name}}'"
},
{
"name": "step-2",
"action_type": "python",
"code": "print('Step 2 executed')"
}
]
}
EOF
# Upload orchestration
root.dshell> orch create hello-world \
-file hello-world.json
# Execute on specific node
root.dshell> orch run -n hello-world \
--node node-1
# Monitor execution
root.dshell> orch execution list -n hello-world
From bare OS to running distributed cluster in 7 phases.
Practice software distribution, orchestrations, and cluster management.
Common issues and solutions for each installation phase.
Start with basics, progress to advanced multi-node scenarios.