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