# Cfg Checker
# Environment file example

# Either open a tunnel from your hosts using 
# 'ssh -L 16969:<cfg-IP>:6969 <user>@<lab-IP>'
# Or run it from within a cloud

# Main log file of the tests
LOGFILE = 'qa-lab.log'

# SSH is used when environment is not local to get salt password
# in order set options and user for the ssh, 
# please, use ~/.ssh/config
# SSH hostname of salt master node
SSH_KEY=/Users/savex/.ssh/id_rsa
SSH_USER=osavatieiev
SSH_HOST=172.16.242.122

# Salt master host to connect to
SALT_URL=172.16.242.122

# Salt master port.
# Note that you can safely execute second master (not on production)
# on the same cfg node with diferent port and set logging to ALL
SALT_PORT=6969

# User and password to auth on master. Can be found in /srv/salt/...
SALT_USER=salt

# default timeout for salt calls
SALT_TIMEOUT=30

# Folder where salt points its filesystem: salt://
SALT_FILE_ROOT=/usr/share/salt-formulas/env/

# Subfolder with scripts to be uploaded
SALT_SCRIPTS_FOLDER=test_scripts

# All nodes list file overide
SALT_NODE_LIST_FILE=etc/qa-lab.list
