# 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
MCP_LOGFILE = 'cfg_checker.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
MCP_SSH_KEY=<ssh_keyfile_path>
MCP_SSH_USER=<ssh_user>
MCP_SSH_HOST=<ssh_hostname>


### Salt type section
# All vars should start with SALT

# Salt master host to connect to
MCP_ENV_HOST=127.0.0.1

# 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/example._list

### K8s section
# All vars start with KUBE
KUBE_CONFIG_ROOT=/root