28 January 2026
Deploy Salt Minions Across Multiple Servers Using Salt-SSH
Quick one-liner: Install salt-minion on dozens of servers without touching each one — use Salt-SSH to push the package, configure it, and enroll the key remotely.
🤔 Why This Matters
The typical SaltStack setup requires you to install the salt-minion package on every managed node, configure it to point to the master, start the service, and accept the key. Doing this manually across 20+ servers is tedious.
If the target nodes are accessible via SSH, you can automate the entire deployment using Salt-SSH — no pre-installed minion required.
🔧 Step 1: Create the Salt State
On your salt-master, create the state directory:
sudo mkdir -p /srv/salt/deploysalt/conf
Create the state file /srv/salt/deploysalt/init.sls:
install_minion:
pkg.installed:
- pkgs:
- salt-minion
configure_master:
file.managed:
- name: /etc/salt/minion
- source: salt://deploysalt/conf/minion
start_minion:
service.running:
- name: salt-minion
- enable: true
🔧 Step 2: Create the Minion Config
Create /srv/salt/deploysalt/conf/minion:
master: salt-master.fosstech.biz
id: {{ grains['fqdn'] }}
This tells the minion where to find the master and how to identify itself.
🔧 Step 3: Deploy via Salt-SSH
Assuming your target server is 192.168.100.82 with SSH user vagrant (password: vagrant, sudo access):
salt-ssh --roster=scan '192.168.100.82' \
--user=vagrant \
--passwd=vagrant \
--sudo \
-i state.apply deploysalt
Salt-SSH connects over SSH, installs salt-minion, drops the config file, and starts the service — all in one command.
🔧 Step 4: Accept the Key
Once the minion starts, it sends its key to the master. Accept it:
# List pending keys
sudo salt-key -L
# Accept all pending keys
sudo salt-key -A
# Verify connectivity
sudo salt '*' test.version
You should see:
node01.fosstech.biz:
3006.0
✅ Deploy to Multiple Servers
Use a roster file to target multiple servers at once. Create /etc/salt/roster:
node01:
host: 192.168.100.82
user: vagrant
passwd: vagrant
sudo: True
node02:
host: 192.168.100.83
user: vagrant
passwd: vagrant
sudo: True
Then run:
salt-ssh '*' state.apply deploysalt
All servers get the minion installed, configured, and started in one go.