Skip to content

Salt-SSH usage shouldn't be different from the 'standard' Salt Master, Salt Minion usage

The minimal config (/etc/salt/roster) file:

the.hostname.com:
  host: 192.168.1.2
  user: user

salt-ssh will upload /etc/salt/pki/master/ssh/salt-ssh.rsa to the the.hostname.com so that public key authentication is used later on. Upon first connection, the user password will be required to provide in the prompt

Permission denied for host the.hostname.com, do you want to deploy the salt-ssh key? (password required):
[Y/n]                                                         
Password for user@the.hostname.com:   

Previous roster file is very limited, such config won't allow to execute any state that requires elevated privileges.

In order to fix this the user must belong to sudo group and have NOPASSWD setting in sudoers file. As of current: 2019.2.2 version both settings are required

Thin dir

salt-ssh uploads some environmental data to the remote and places it under thin_dir (default: /var/tmp - contrary to /tmp from doc) It contains salt-call along with packaged custom modules, lowstate and grains.

Log

Using -l <log level> doesn't provide logs from remote host, thus if some modules are missing on remote, user won't know it.
This is somewhat consistent with Salt Master - Minion deployments where Salt Minion logs provide more details about issues during state execution

In oder to gather logs from remote:

the.hostname.com:
  host: 192.168.1.2
  user: user
  minion_opts:
    log_level: debug
    log_level_logfile: debug
    log_file: ../../salt-ssh.log

Putting absolute path as log_file doesn't allow to gather logs, this must be relative path