neulab/tldr huggingface dataset:
• apt-get install salt-cloud
• apt-get install salt-master
• apt-get install salt-minion
• apt-get install salt-ssh
• apt-get install salt-syndic
Post-installation tasks Now, go to the Configuring Salt page.
Arista EOS Salt minion installation guide The Salt minion for Arista EOS is distributed as a SWIX extension and can be installed directly on the switch. The EOS network operating system is based on old Fedora distributions and the installation of the salt-minion requires backports. This SWIX extension contains the necessary backports, together with the Salt basecode.
NOTE: This SWIX extension has been tested on Arista DCS-7280SE-68-R, running EOS 4.17.5M and vEOS 4.18.3F.
Important Notes This package is in beta, make sure to test it carefully before running it in production.
If confirmed working correctly, please report and add a note on this page with the platform model and EOS version.
If you want to uninstall this package, please refer to the uninstalling section.
Installation from the Official SaltStack Repository Download the swix package and save it to flash.
veos#copy https://salt-eos.netops.life/salt-eos-latest.swix flash: veos#copy https://salt-eos.netops.life/startup.sh flash:
Install the Extension Copy the Salt package to extension
veos#copy flash:salt-eos-latest.swix extension:
Install the SWIX
veos#extension salt-eos-latest.swix force
Verify the installation
veos#show extensions | include salt-eos salt-eos-2017-07-19.swix      1.0.11/1.fc25        A, F                27
Change the Salt master IP address or FQDN, by edit the variable (SALT_MASTER)
veos#bash vi /mnt/flash/startup.sh
Make sure you enable the eAPI with unix-socket
veos(config)#management api http-commands protocol unix-socket no shutdown
Post-installation tasks Generate Keys and host record and start Salt minion
veos#bash #sudo /mnt/flash/startup.sh
salt-minion should be running
Copy the installed extensions to boot-extensions
veos#copy installed-extensions boot-extensions
Apply event-handler to let EOS start salt-minion during boot-up
veos(config)#event-handler boot-up-script trigger on-boot action bash sudo /mnt/flash/startup.sh
For more specific installation details of the salt-minion, please refer to Configuring Salt.
Uninstalling If you decide to uninstall this package, the following steps are recommended for safety:
1. Remove the extension from boot-extensions
veos#bash rm /mnt/flash/boot-extensions
2. Remove the extension from extensions folder
veos#bash rm /mnt/flash/.extensions/salt-eos-latest.swix
2. Remove boot-up script
veos(config)#no event-handler boot-up-script
Additional Information This SWIX extension contains the following RPM packages:
libsodium-1.0.11-1.fc25.i686.rpm libstdc++-6.2.1-2.fc25.i686.rpm openpgm-5.2.122-6.fc24.i686.rpm python-Jinja2-2.8-0.i686.rpm python-PyYAML-3.12-0.i686.rpm python-babel-0.9.6-5.fc18.noarch.rpm python-backports-1.0-3.fc18.i686.rpm python-backports-ssl_match_hostname-3.4.0.2-1.fc18.noarch.rpm python-backports_abc-0.5-0.i686.rpm python-certifi-2016.9.26-0.i686.rpm python-chardet-2.0.1-5.fc18.noarch.rpm python-crypto-1.4.1-1.noarch.rpm python-crypto-2.6.1-1.fc18.i686.rpm python-futures-3.1.1-1.noarch.rpm python-jtextfsm-0.3.1-0.noarch.rpm python-kitchen-1.1.1-2.fc18.noarch.rpm python-markupsafe-0.18-1.fc18.i686.rpm python-msgpack-python-0.4.8-0.i686.rpm python-napalm-base-0.24.3-1.noarch.rpm python-napalm-eos-0.6.0-1.noarch.rpm python-netaddr-0.7.18-0.noarch.rpm python-pyeapi-0.7.0-0.noarch.rpm python-salt-2017.7.0_1414_g2fb986f-1.noarch.rpm python-singledispatch-3.4.0.3-0.i686.rpm python-six-1.10.0-0.i686.rpm python-tornado-4.4.2-0.i686.rpm python-urllib3-1.5-7.fc18.noarch.rpm python2-zmq-15.3.0-2.fc25.i686.rpm zeromq-4.1.4-5.fc25.i686.rpm
Fedora Beginning with version 0.9.4, Salt has been available in the primary Fedora repositories and EPEL. It is installable using yum or dnf, depending on your version of Fedora.
NOTE: Released versions of Salt starting with 2015.5.2 through 2016.3.2 do not have Fedora packages available though EPEL. To install a version of Salt within this release array, please use SaltStack's Bootstrap Script and use the git method of installing Salt using the version's associated release tag.
Release 2016.3.3 and onward will have packaged versions available via EPEL.
WARNING: Fedora 19 comes with systemd 204.  Systemd has known bugs fixed in later revisions that prevent the salt-master from starting reliably or opening the network connections that it needs to.  It's not likely that a salt-master will start or run reliably on any distribution that uses systemd version 204 or earlier.  Running salt-minions should be OK.
Installation Salt can be installed using yum and is available in the standard Fedora repositories.
Stable Release Salt is packaged separately for the minion and the master. It is necessary only to install the appropriate package for the role the machine will play. Typically, there will be one master and multiple minions.
yum install salt-master yum install salt-minion
Installing from updates-testing When a new Salt release is packaged, it is first admitted into the updates-testing repository, before being moved to the stable repo.
To install from updates-testing, use the enablerepo argument for yum:
yum --enablerepo=updates-testing install salt-master yum --enablerepo=updates-testing install salt-minion
Installation Using pip Since Salt is on PyPI, it can be installed using pip, though most users prefer to install using a package manager.
Installing from pip has a few additional requirements:
• Install the group 'Development Tools', dnf groupinstall 'Development Tools'
• Install the 'zeromq-devel' package if it fails on linking against that afterwards as well.
A pip install does not make the init scripts or the /etc/salt directory, and you will need to provide your own systemd service unit.
Installation from pip:
pip install salt
WARNING: If installing from pip (or from source using setup.py install), be advised that the yum-utils package is needed for Salt to manage packages. Also, if the Python dependencies are not already installed, then you will need additional libraries/tools installed to build some of them.  More information on this can be found here.
Post-installation tasks Master
To have the Master start automatically at boot time:
systemctl enable salt-master.service
To start the Master:
systemctl start salt-master.service
To have the Minion start automatically at boot time:
systemctl enable salt-minion.service
To start the Minion:
systemctl start salt-minion.service
FreeBSD Installation Salt is available in the FreeBSD ports tree at sysutils/py-salt.
FreeBSD binary repo Install Salt on FreeBSD via the official package repository. Salt is packaged with whichever Python version is currently the default on FreeBSD.
Python 3.8 is currently default, install from packages like this:
pkg install py38-salt
FreeBSD ports Installation from ports:
cd /usr/ports/sysutils/py-salt make install
Python 3.7 can be used by setting default Python version to 3.7:
echo "DEFAULT_VERSIONS+= python=3.7" >> /etc/make.conf
Post-installation tasks rc.conf
Activate the Salt Master in /etc/rc.conf:
sysrc salt_master_enable="YES"
Start the Salt Master as follows:
service salt_master start
Activate the Salt Minion in /etc/rc.conf:
sysrc salt_minion_enable="YES"
Start the Minion
Start the Salt Minion as follows:
service salt_minion start
Gentoo Salt can be easily installed on Gentoo via Portage:
emerge app-admin/salt
Post-installation tasks Now go to the Configuring Salt page.
Cisco Nexus Salt Minion Installation and Configuration Guide This document describes the Salt Minion installation and configuration on Cisco Nexus switches.  These instructions detail the process for managing the Nexus switches using a Proxy Minion or Native Minion on platforms that have GuestShell support.
Table of Contents • Cisco Nexus Salt Minion Installation and Configuration Guide
• Pre-Install Tasks
• STEP 1: Verify Platform and Software Version Support
• STEP 2: Choose Salt Minion Type
• STEP 3: Network Connectivity
• Salt Proxy Minion Configuration
• Proxy Minion Pillar Data
• GuestShell Salt Minion Installation
• STEP 1a: Enable the Guestshell on low footprint N3ks
• STEP 1b: Enable the Guestshell
• STEP 2: Set Up Guestshell Network
• STEP 3: Install SaltStack Minion
• STEP 4: Configure SaltStack Minion
• GuestShell Salt Minion Persistence
• References
Pre-Install Tasks STEP 1: Verify Platform and Software Version Support The following platforms and software versions have been certified to work with this version of Salt.
Platform / Software Minimum Requirements ┌────────────┬───────────────┬───────────┬───────────────┬───────────────┐ │Supported   │ Minimum NX-OS │ SSH Proxy │ NX-API Proxy  │ GuestShell    │ │Platforms   │ Version       │ Minion    │ Minion        │ Minion        │ ├────────────┼───────────────┼───────────┼───────────────┼───────────────┤ │Cisco Nexus │ 7.0(3)I2(5)   │ Supported │ Supported     │ Supported     │ │N3k         │ and later     │           │               │               │ ├────────────┼───────────────┼───────────┼───────────────┼───────────────┤ │Cisco Nexus │ 7.0(3)I2(5)   │ Supported │ Supported     │ Supported     │ │N9k         │ and later     │           │               │               │ ├────────────┼───────────────┼───────────┼───────────────┼───────────────┤ │Cisco Nexus │ 7.3(0)N1(1)   │ Supported │ Not Supported │ Not Supported │ │N6k         │ and later     │           │               │               │ ├────────────┼───────────────┼───────────┼───────────────┼───────────────┤ │Cisco Nexus │ 7.3(0)D1(1)   │ Supported │ Supported     │ Not Supported │ │N7k         │ and later     │           │               │               │ └────────────┴───────────────┴───────────┴───────────────┴───────────────┘
Platform Models ┌─────────┬────────────────────────────┐ │Platform │ Description                │ ├─────────┼────────────────────────────┤ │N3k      │ Support includes N30xx,    │ │         │ N31xx, N32xx and N35xx     │ │         │ models                     │ ├─────────┼────────────────────────────┤ │N6k      │ Support includes all N6xxx │ │         │ models                     │ ├─────────┼────────────────────────────┤ │N7k      │ Support includes all N7xxx │ │         │ models                     │ ├─────────┼────────────────────────────┤ │N9k      │ Support includes all N9xxx │ │         │ models                     │ └─────────┴────────────────────────────┘
STEP 2: Choose Salt Minion Type Using the tables above, select the Salt Minion type.
Choices:
• SSH Proxy Minion (See Salt Proxy Minion Configuration Section)
• NX-API Proxy Minion (See Salt Proxy Minion Configuration Section)
GuestShell Native Minion (See GuestShell Salt Minion Installation Section)
• Some platforms support a native minion installed directly on the NX-OS device inside the GuestShell
• The GuestShell is a secure Linux container environment running CentOS
STEP 3: Network Connectivity Ensure that IP reachability exists between the NX-OS Salt Minion device and the SaltStack Master.
Note: The management interface exists in a separate VRF context and requires additional configuration as shown.
Example: Nexus CLI Configuration for connectivity via management interface
config term vrf context management ip name-server 10.0.0.202 ip domain-name mycompany.com ip route 0.0.0.0/0 10.0.0.1
interface mgmt0 vrf member management ip address 10.0.0.99/24
ntp server 10.0.0.201 use-vrf management end
Salt Proxy Minion Configuration Here is a sample Proxy Minion directory structure
saltmaster:/srv/pillar$tree . ├── n3k-proxy.sls ├── n7k-proxy.sls └── top.sls
This displays a top sls file and two proxy minion sls files for a Nexus 3k and Nexus 7k device.
Sample contents for the top.sls file.
saltmaster:/srv/pillar$cat top.sls base: n3k-proxy: - n3k-proxy n7k-proxy: - n7k-proxy
Proxy Minion Pillar Data Here is a sample Proxy Minion pillar data file.
All of the data for both ssh and nxapi proxy minion types can be stored in the same pillar data file.  To choose ssh or nxapi, simply set the connection: parameter accordingly.
saltmaster:/srv/pillar$cat n7k-proxy.sls proxy: proxytype: nxos
# Specify ssh or nxapi connection type (default is ssh) #connection: ssh connection: nxapi
# Parameters Common to both SSH and NX-API host: n7k.example.com username: admin password: password
# SSH Parameters prompt_name: n7k ssh_args: '-o PubkeyAuthentication=no' key_accept: True
# NX-API Parameters transport: https port: 443 verify: False
# Option to prevent auto-save after each configuration command. # Setting this to True will improve performance when using # nxos execution module functions to configure the device. no_save_config: True
• For the most current nxos proxy minion configuration options, See salt.proxy.nxos
• For the most current list of nxos execution module functions, See salt.modules.nxos
GuestShell Salt Minion Installation This section is only required when running the SaltStack Minion from the guestshell.
STEP 1a: Enable the Guestshell on low footprint N3ks NOTE: Skip down to STEP 1b if the target system is not a low footprint N3k.
Nexus 3xxx switches with 4 GB RAM and 1.6 GB bootflash are advised to use compacted images to reduce the storage resources consumed by the image. As part of the compaction process, the guestshell.ova is removed from the system image.  To make use of the guestshell on these systems, the guestshell.ova may be downloaded and used to install the guestshell.
Guestshell OVA Download Link
Starting in release 9.2(1) and onward, the .ova file can be copied to the volatile: directory which frees up more space on bootflash:.
Copy the guestshell.ova file to volatile: if supported, otherwise copy it to bootflash:
n3xxx# copy scp://admin@1.2.3.4/guestshell.ova volatile: vrf management guestshell.ova 100% 55MB 10.9MB/s 00:05 Copy complete, now saving to disk (please wait)... Copy complete.
Use the guestshell enable command to install and enable guestshell.
n3xxx# guestshell enable package volatile:guestshell.ova
STEP 1b: Enable the Guestshell The guestshell container environment is enabled by default on most platforms; however, the default disk and memory resources allotted to guestshell are typically too small to support SaltStack Minion requirements. The resource limits may be increased with the NX-OS CLI guestshell resize commands as shown below.
Resource Requirements ┌─────────┬─────────────┐ │Resource │ Recommended │ ├─────────┼─────────────┤ │Disk     │ 1000 MB     │ ├─────────┼─────────────┤ │Memory   │ 350 MB      │ └─────────┴─────────────┘
show guestshell detail displays the current resource limits:
n3k# show guestshell detail Virtual service guestshell+ detail State                 : Activated ... Resource reservation Disk                : 150 MB Memory              : 128 MB
guestshell resize rootfs sets disk size limits while guestshell resize memory sets memory limits. The resize commands do not take effect until after the guestshell container is (re)started by guestshell reboot or guestshell enable.
Example. Allocate resources for guestshell by setting new limits to 1000MB disk and 350MB memory.
n3k# guestshell resize rootfs 1000 n3k# guestshell resize memory 350
n3k# guestshell reboot Are you sure you want to reboot the guest shell? (y/n) [n] y
STEP 2: Set Up Guestshell Network The guestshell is an independent CentOS container that does not inherit settings from NX-OS.
• Use guestshell to enter the guestshell environment, then become root.
• Optional: Use chvrf to specify a vrf namespace; e.g. sudo chvrf management
n3k#  guestshell
[guestshell@guestshell ~]$ sudo su -          # Optional: sudo chvrf management [root@guestshell guestshell]#
OPTIONAL: Add DNS Configuration
[root@guestshell guestshell]#  cat >> /etc/resolv.conf << EOF nameserver 10.0.0.202 domain mycompany.com EOF
OPTIONAL: Define proxy server variables if needed to allow network access to SaltStack package repositories
export http_proxy=http://proxy.yourdomain.com:<port> export https_proxy=https://proxy.yourdomain.com:<port>
STEP 3: Install SaltStack Minion Install the python3 and python3-pip packages. [root@guestshell guestshell]# yum install python3 python3-pip
OPTIONAL: Upgrade the pip installer [root@guestshell guestshell]# pip3 install --upgrade pip
Install the certifi python package. [root@guestshell guestshell]# pip3 install certifi
The most current information on installing the SaltStack Minion in a CentOS 7 environment can be found here
Information from the install guide is provided here for convenience.
Run the following commands to install the SaltStack repository and key:
[root@guestshell guestshell]# rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub [root@guestshell guestshell]# curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | tee /etc/yum.repos.d/salt.repo
Run the following command to force yum to revalidate the cache for each repository. [root@guestshell guestshell]# yum clean expire-cache
Install the Salt Minion. [root@guestshell guestshell]# yum install salt-minion
STEP 4: Configure SaltStack Minion Make the following changes to the /etc/salt/minion configuration file in the NX-OS GuestShell.
Change the master: directive to point to the SaltStack Master.
- #master: salt + master: saltmaster.example.com
Change the id: directive to easily identify the minion running in the GuestShell.
- #id: salt + id: n3k-guestshell-minion
Start the Minion in the Guestshell and accept the key on the SaltStack Master. [root@guestshell ~]# systemctl start salt-minion
saltmaster: salt-key -L Accepted Keys: Denied Keys: Unaccepted Keys: n3k-guestshell-minion Rejected Keys:
saltmaster: salt-key -A The following keys are going to be accepted: Unaccepted Keys: n3k-guestshell-minion Proceed? [n/Y] Y Key for minion n3k-guestshell-minion accepted.
Ping the SaltStack Minion running in the Guestshell.
saltmaster: salt n3k-guestshell-minion nxos.ping n3k-guestshell-minion: True
GuestShell Salt Minion Persistence This section documents SaltStack Minion persistence in the guestshell after system restarts and high availability switchovers.
The guestshell container does not automatically sync filesystem changes from the active processor to the standby processor. This means that SaltStack Minion installation files and related file changes will not be present on the standby until they are manually synced with the following NX-OS exec command:
guestshell sync
The guestshell environment uses systemd for service management. The SaltStack Minion provides a generic systemd script when installed, but a slight modification as shown below is needed for nodes that run Salt in the management (or other vrf) namespace:
--- /usr/lib/systemd/system/salt-minion.service.old +++ /usr/lib/systemd/system/salt-minion.service [Unit] Description=The Salt Minion Documentation=man:salt-minion(1) file:///usr/share/doc/salt/html/contents.html https://docs.saltproject.io/en/latest/contents.html After=network.target salt-master.service
[Service] KillMode=process Type=notify NotifyAccess=all LimitNOFILE=8192
- ExecStart=/usr/bin/salt-minion + ExecStart=/bin/nsenter --net=/var/run/netns/management -- /usr/bin/salt-minion
[Install] WantedBy=multi-user.target
Change the pidfile: directive to point to the /run tmpfs location in the GuestShell.
- #pidfile: /var/run/salt-minion.pid + pidfile: /run/salt-minion.pid
Next, enable the SaltStack Minion systemd service (the enable command adds it to systemd for autostarting on the next boot) and optionally start it now:
systemctl enable salt-minion systemctl start salt-minion
References Nexus Document References ┌───────────────┬───────────────────────┐ │References     │ Description           │ ├───────────────┼───────────────────────┤ │GuestShell_N9k │ N9k Guestshell        │ │               │ Programmability Guide │ ├───────────────┼───────────────────────┤ │GuestShell_N3k │ N3k Guestshell        │ │               │ Programmability Guide │ └───────────────┴───────────────────────┘
OpenBSD Salt was added to the OpenBSD ports tree on Aug 10th 2013.  It has been tested on OpenBSD 5.5 onwards.
Salt is dependent on the following additional ports. These will be installed as dependencies of the sysutils/salt port:
devel/py3-progressbar net/py3-msgpack net/py3-zmq security/py3-Cryptodome security/py3-M2Crypto sysutils/py3-distro textproc/py3-MarkupSafe textproc/py3-yaml www/py3-jinja2 www/py3-requests
Installation To install Salt from the OpenBSD package repo, use the command:
pkg_add salt
rcctl enable salt_master
rcctl start salt_master
rcctl enable salt_minion
rcctl start salt_minion
macOS Installation from the Official SaltStack Repository Latest stable build from the selected branch:
The output of md5 <salt pkg> should match the contents of the corresponding md5 file.
• Earlier builds from supported branches
• Archived builds from unsupported branches
Installation from Homebrew brew install saltstack
It should be noted that Homebrew explicitly discourages the use of sudo: Homebrew is designed to work without using sudo. You can decide to use it but we strongly recommend not to do so. If you have used sudo and run into a bug then it is likely to be the cause. Please don’t file a bug report unless you can reproduce it after reinstalling Homebrew from scratch without using sudo
Installation from MacPorts Macports isolates its dependencies from the OS, and installs salt in /opt/local by default, with config files under /opt/local/etc/salt. For best results, add /opt/local/bin to your PATH.
sudo port install salt
Variants allow selection of python version used to run salt, defaulting to python27, but also supporting python34, python35, and python36. To install salt with Python 3.6, use the python36 variant, for example:
sudo port install salt @python36
Startup items (for master, minion, and rest-cherrypy API gateway, respectively) are installed by subport targets. These will register launchd LaunchDaemons as org.macports.salt-minion, for example, to trigger automatic startup of the salt-minion through launchd. LaunchDaemons for salt can be started and stopped without reboot using the macprots load and unload commands.
sudo port install salt-master salt-minion salt-api sudo port load salt-master salt-minion salt-api
Installation from Pip When only using the macOS system's pip, install this way:
sudo pip install salt
Salt-Master Customizations NOTE: Salt master on macOS is not tested or supported by SaltStack. See SaltStack Platform Support for more information.
To run salt-master on macOS, sudo add this configuration option to the /etc/salt/master file:
max_open_files: 8192
On versions previous to macOS 10.10 (Yosemite), increase the root user maxfiles limit:
sudo launchctl limit maxfiles 4096 8192
NOTE: On macOS 10.10 (Yosemite) and higher, maxfiles should not be adjusted. The default limits are sufficient in all but the most extreme scenarios.  Overriding these values with the setting below will cause system instability!
Now the salt-master should run without errors:
sudo salt-master --log-level=all
RHEL / CentOS / Scientific Linux / Amazon Linux / Oracle Linux Salt should work properly with all mainstream derivatives of Red Hat Enterprise Linux, including CentOS, Scientific Linux, Oracle Linux, and Amazon Linux.  Report any bugs or issues on the issue tracker.
Installation from the Official Salt Project Repository Packages for Redhat, CentOS, and Amazon Linux are available in the Salt Project Repository.
• Red Hat / CentOS
• Amazon Linux
Red Hat / CentOS
If looking to use archives, the same directions from the RHEL/CentOS install directions can be used by replacing the URL paths with the appropriate archive location. The repository configuration endpoint also needs to be adjusted to point to the archives. Here is an example sed command:
# Salt repo configurations are found in the /etc/yum.repos.d/ directory sed -i 's/repo.saltproject.io/archive.repo.saltproject.io/g' /etc/yum.repos.d/salt*.repo
If looking to use archives, the same directions from the Amazon install directions can be used by replacing the URL paths with the appropriate archive location. The repository configuration endpoint also needs to be adjusted to point to the archives. Here is an example sed command:
NOTE: As of 2015.8.0, EPEL repository is no longer required for installing on RHEL systems. Salt Project repository provides all needed dependencies.
WARNING: If installing on Red Hat Enterprise Linux 7 with disabled (not subscribed on) 'RHEL Server Releases' or 'RHEL Server Optional Channel' repositories, append CentOS 7 GPG key URL to Salt Project yum repository configuration to install required base packages:
[saltstack-repo] name=Salt repo for Red Hat Enterprise Linux $releasever baseurl=https://repo.saltproject.io/py3/redhat/$releasever/$basearch/latest enabled=1 gpgcheck=1 gpgkey=https://repo.saltproject.io/py3/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub https://repo.saltproject.io/py3/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
NOTE: systemd and systemd-python are required by Salt, but are not installed by the Red Hat 7 @base installation or by the Salt installation. These dependencies might need to be installed before Salt.
Installation Using pip Since Salt is on PyPI, it can be installed using pip, though most users prefer to install using RPM packages (which can be installed by following the directions in the Salt Repository).
• Install the group 'Development Tools', yum groupinstall 'Development Tools'
ZeroMQ 4 We recommend using ZeroMQ 4 where available. Salt Project provides ZeroMQ 4.3.1 and pyzmq 17.0.0 in the Salt Repository.
If this repository is added before Salt is installed, then installing either salt-master or salt-minion will automatically pull in ZeroMQ 4.3.1, and additional steps to upgrade ZeroMQ and pyzmq are unnecessary.
Package Management Salt's interface to yum makes heavy use of the repoquery utility, from the yum-utils package. If salt has been installed using pip, or a host is being managed using salt-ssh, then as of version 2014.7.0 yum-utils will be installed automatically to satisfy this dependency.
Post-installation tasks Master To have the Master start automatically at boot time:
RHEL/CentOS 7 and 8
Minion To have the Minion start automatically at boot time:
Solaris Salt is known to work on Solaris but community packages are unmaintained.
It is possible to install Salt on Solaris by using setuptools.
For example, to install the develop version of salt:
git clone https://github.com/saltstack/salt cd salt sudo python setup.py install --force
NOTE: SaltStack does offer commercial support for Solaris which includes packages.  Packages can be found on the Downloads page of the Enterprise Installation Guide and are downloadable with a SaltStack Enterprise account.
Ubuntu Installation from the Official SaltStack Repository Packages for Ubuntu 20.04 (Focal), Ubuntu 18.04 (Bionic), and Ubuntu 16 (Xenial) are available in the SaltStack repository.
Instructions are at https://repo.saltproject.io/#ubuntu.
If looking to use archives, the same directions from the Ubuntu install directions can be used by replacing the URL paths with the appropriate archive location. The repository configuration endpoint also needs to be adjusted to point to the archives. Here is an example sed command:
Windows Salt has full support for running the Salt minion on Windows. You must connect Windows Salt minions to a Salt master on a supported operating system to control your Salt Minions.
Many of the standard Salt modules have been ported to work on Windows and many of the Salt States currently work on Windows as well.
Installation from the Official SaltStack Repository Latest stable build from the selected branch:
The output of md5sum <salt minion exe> should match the contents of the corresponding md5 file.
There are installers available for Python 3. Starting with Salt 3001, only Python 3 builds of the Windows Salt Minion will be built. Python 2 builds exist for earlier Salt Minion versions.
Archived builds from unsupported branches:
NOTE: The installation executable installs dependencies that the Salt minion requires.
The 64bit and 32bit installers have been tested on Windows 8.1, Windows Server 2012 R2, Windows 10, Windows Server 2016, and Windows Server 2019. 32bit installers have only been tested on 64bit systems. Please file a bug report on our GitHub repo if issues for other platforms are found.
The installer will detect previous installations of Salt and ask if you would like to remove them. Clicking OK will remove the Salt binaries and related files but leave any existing config, cache, and PKI information.
Salt Minion Installation If the system is missing the appropriate version of the Visual C++ Redistributable (vcredist) the user will be prompted to install it. Click OK to install the vcredist. Click Cancel to abort the installation without making modifications to the system.
If Salt is already installed on the system the user will be prompted to remove the previous installation. Click OK to uninstall Salt without removing the configuration, PKI information, or cached files. Click Cancel to abort the installation before making any modifications to the system.
After the Welcome and the License Agreement, the installer asks for two bits of information to configure the minion; the master hostname and the minion name.  The installer will update the minion config with these options.
If the installer finds an existing minion config file, these fields will be populated with values from the existing config, but they will be grayed out.  There will also be a checkbox to use the existing config. If you continue, the existing config will be used. If the checkbox is unchecked, default values are displayed and can be changed. If you continue, the existing config file in c:\salt\conf will be removed along with the c:\salt\conf\minion.d directory. The values entered will be used with the default config.
The final page allows you to start the minion service and optionally change its startup type. By default, the minion is set to Automatic. You can change the minion start type to Automatic (Delayed Start) by checking the 'Delayed Start' checkbox.
NOTE: Highstates that require a reboot may fail after reboot because salt continues the highstate before Windows has finished the booting process.  This can be fixed by changing the startup type to 'Automatic (Delayed Start)'. The drawback is that it may increase the time it takes for the 'salt-minion' service to actually start.
The salt-minion service will appear in the Windows Service Manager and can be managed there or from the command line like any other Windows service.
sc start salt-minion net start salt-minion
Installation Prerequisites Most Salt functionality should work just fine right out of the box. A few Salt modules rely on PowerShell. The minimum version of PowerShell required for Salt is version 3. If you intend to work with DSC then Powershell version 5 is the minimum.
Silent Installer Options The installer can be run silently by providing the /S option at the command line. The installer also accepts the following options for configuring the Salt Minion silently:
┌──────────────────────┬─────────────────────────────┐ │Option                │ Description                 │ ├──────────────────────┼─────────────────────────────┤ │/master=              │ A string value to set the   │ │                      │ IP address or hostname of   │ │                      │ the master. Default value   │ │                      │ is 'salt'. You can pass a   │ │                      │ single master or a          │ │                      │ comma-separated list of     │ │                      │ masters.  Setting the       │ │                      │ master will cause the       │ │                      │ installer to use the        │ │                      │ default config or a custom  │ │                      │ config if defined.          │ ├──────────────────────┼─────────────────────────────┤ │/minion-name=         │ A string value to set the   │ │                      │ minion name. Default value  │ │                      │ is 'hostname'. Setting the  │ │                      │ minion name causes the      │ │                      │ installer to use the        │ │                      │ default config or a custom  │ │                      │ config if defined.          │ ├──────────────────────┼─────────────────────────────┤ │/start-minion=        │ Either a 1 or 0. '1' will   │ │                      │ start the salt-minion       │ │                      │ service, '0' will not.      │ │                      │ Default is to start the     │ │                      │ service after installation. │ ├──────────────────────┼─────────────────────────────┤ │/start-minion-delayed │ Set the minion start type   │ │                      │ to Automatic (Delayed       │ │                      │ Start).                     │ ├──────────────────────┼─────────────────────────────┤ │/default-config       │ Overwrite the existing      │ │                      │ config if present with the  │ │                      │ default config for salt.    │ │                      │ Default is to use the       │ │                      │ existing config if present. │ │                      │ If /master and/or           │ │                      │ /minion-name is passed,     │ │                      │ those values will be used   │ │                      │ to update the new default   │ │                      │ config.                     │ ├──────────────────────┼─────────────────────────────┤ │/custom-config=       │ A string value specifying   │ │                      │ the name of a custom config │ │                      │ file in the same path as    │ │                      │ the installer or the full   │ │                      │ path to a custom config     │ │                      │ file. If /master and/or     │ │                      │ /minion-name is passed,     │ │                      │ those values will be used   │ │                      │ to update the new custom    │ │                      │ config.                     │ └──────────────────────┴─────────────────────────────┘
│/S                    │ Runs the installation       │ │                      │ silently. Uses the above    │ │                      │ settings or the defaults.   │ ├──────────────────────┼─────────────────────────────┤ │/?                    │ Displays command line help. │ └──────────────────────┴─────────────────────────────┘
NOTE: /start-service has been deprecated but will continue to function as expected for the time being.
NOTE: /default-config and /custom-config= will backup an existing config if found. A timestamp and a .bak extension will be added. That includes the minion file and the minion.d directory.
Here are some examples of using the silent installer:
# Install the Salt Minion # Configure the minion and start the service
Salt-Minion-3001-Py3-AMD64-Setup.exe /S /master=yoursaltmaster /minion-name=yourminionname
# Install the Salt Minion # Configure the minion but don't start the minion service
Salt-Minion-3001-Py3-AMD64-Setup.exe /S /master=yoursaltmaster /minion-name=yourminionname /start-minion=0
# Install the Salt Minion # Configure the minion using a custom config and configuring multimaster
Salt-Minion-3001-Py3-AMD64-Setup.exe /S /custom-config=windows_minion /master=prod_master1,prod_master2
Running the Salt Minion on Windows as an Unprivileged User Notes:
• These instructions were tested with Windows Server 2008 R2
• They are generalizable to any version of Windows that supports a salt-minion
Create the Unprivileged User that the Salt Minion will Run As 1.  Click Start > Control Panel > User Accounts.
2.  Click Add or remove user accounts.
3.  Click Create new account.
4.  Enter salt-user (or a name of your preference) in the New account name field.
5.  Select the Standard user radio button.
6.  Click the Create Account button.
7.  Click on the newly created user account.
8.  Click the Create a password link.
9.  In the New password and Confirm new password fields, provide a password (e.g "SuperSecretMinionPassword4Me!").
10. In the Type a password hint field, provide appropriate text (e.g. "My Salt Password").
11. Click the Create password button.
12. Close the Change an Account window.
Add the New User to the Access Control List for the Salt Folder 1. In a File Explorer window, browse to the path where Salt is installed (the default path is C:\Salt).
2. Right-click on the Salt folder and select Properties.
3. Click on the Security tab.
4. Click the Edit button.
5. Click the Add button.
6. Type the name of your designated Salt user and click the OK button.
7. Check the box to Allow the Modify permission.
8. Click the OK button.
9. Click the OK button to close the Salt Properties window.
Update the Windows Service User for the salt-minion Service 1.  Click Start > Administrative Tools > Services.
2.  In the Services list, right-click on salt-minion and select Properties.
3.  Click the Log On tab.
4.  Click the This account radio button.
5.  Provide the account credentials created in section A.
6.  Click the OK button.
7.  Click the OK button to the prompt confirming that the user has been granted the Log On As A Service right.
8.  Click the OK button to the prompt confirming that The new logon name will not take effect until you stop and restart the service.
9.  Right-Click on salt-minion and select Stop.
10. Right-Click on salt-minion and select Start.
Building and Developing on Windows This document will explain how to set up a development environment for Salt on Windows. The development environment allows you to work with the source code to customize or fix bugs. It will also allow you to build your own installation.
There are several scripts to automate creating a Windows installer as well as setting up an environment that facilitates developing and troubleshooting Salt code. They are located in the pkg\windows directory in the Salt repo (here).
Scripts: ┌────────────────┬─────────────────────────────┐ │Script          │ Description                 │ ├────────────────┼─────────────────────────────┤ │build_env_2.ps1 │ A PowerShell script that    │ │                │ sets up a Python 2 build    │ │                │ environment                 │ ├────────────────┼─────────────────────────────┤ │build_env_3.ps1 │ A PowerShell script that    │ │                │ sets up a Python 3 build    │ │                │ environment                 │ ├────────────────┼─────────────────────────────┤ │build_pkg.bat   │ A batch file that builds a  │ │                │ Windows installer based on  │ │                │ the contents of the         │ │                │ C:\Python27 directory       │ ├────────────────┼─────────────────────────────┤ │build.bat       │ A batch file that fully     │ │                │ automates the building of   │ │                │ the Windows installer using │ │                │ the above two scripts       │ └────────────────┴─────────────────────────────┘
NOTE: The build.bat and build_pkg.bat scripts both accept a parameter to specify the version of Salt that will be displayed in the Windows installer.  If no version is passed, the version will be determined using git.
Both scripts also accept an additional parameter to specify the version of Python to use. The default is 2.
Prerequisite Software The only prerequisite is Git for Windows.
Create a Build Environment 1. Working Directory Create a Salt-Dev directory on the root of C:. This will be our working directory. Navigate to Salt-Dev and clone the Salt repo from GitHub.
Open a command line and type:
cd \ md Salt-Dev cd Salt-Dev git clone https://github.com/saltstack/salt
Go into the salt directory and checkout the version of salt to work with (2016.3 or higher).
cd salt git checkout 2017.7.2
2. Setup the Python Environment Navigate to the pkg\windows directory and execute the build_env.ps1 PowerShell script.
cd pkg\windows powershell -file build_env_2.ps1
NOTE: You can also do this from Explorer by navigating to the pkg\windows directory, right clicking the build_env_2.ps1 powershell script and selecting Run with PowerShell
This will download and install Python 2 with all the dependencies needed to develop and build Salt.
NOTE: If you get an error or the script fails to run you may need to change the execution policy. Open a powershell window and type the following command:
3. Salt in Editable Mode Editable mode allows you to more easily modify and test the source code. For more information see the Pip documentation.
Navigate to the root of the salt directory and install Salt in editable mode with pip
cd \Salt-Dev\salt pip install -e .
NOTE: The . is important
NOTE: If pip is not recognized, you may need to restart your shell to get the updated path
NOTE: If pip is still not recognized make sure that the Python Scripts folder is in the System %PATH%. (C:\Python2\Scripts)
4. Setup Salt Configuration Salt requires a minion configuration file and a few other directories. The default config file is named minion located in C:\salt\conf. The easiest way to set this up is to copy the contents of the salt\pkg\windows\buildenv directory to C:\salt.
cd \ md salt xcopy /s /e \Salt-Dev\salt\pkg\windows\buildenv\* \salt\
Now go into the C:\salt\conf directory and edit the minion config file named minion (no extension). You need to configure the master and id parameters in this file. Edit the following lines:
master: <ip or name of your master> id: <name of your minion>
Create a Windows Installer To create a Windows installer, follow steps 1 and 2 from Create a Build Environment above. Then proceed to 3 below:
3. Install Salt To create the installer for Window we install Salt using Python instead of pip.  Navigate to the root salt directory and install Salt.
cd \Salt-Dev\salt python setup.py install
4. Create the Windows Installer Navigate to the pkg\windows directory and run the build_pkg.bat with the build version (2017.7.2) and the Python version as parameters.
cd pkg\windows build_pkg.bat 2017.7.2 2 ^^^^^^^^ ^ |    | # build version --     | # python version ------
NOTE: If no version is passed, the build_pkg.bat will guess the version number using git. If the python version is not passed, the default is 2.
Creating a Windows Installer: Alternate Method (Easier) Clone the Salt repo from GitHub into the directory of your choice. We're going to use Salt-Dev.
Go into the salt directory and checkout the version of Salt you want to build.
Then navigate to pkg\windows and run the build.bat script with the version you're building.
cd pkg\windows build.bat 2017.7.2 3 ^^^^^^^^ ^ |    | # build version    | # python version --
This will install everything needed to build a Windows installer for Salt using Python 3. The binary will be in the salt\pkg\windows\installer directory.
Testing the Salt minion 1. Create the directory C:\salt (if it doesn't exist already)
Copy the example conf and var directories from pkg\windows\buildenv into C:\salt
3. Edit C:\salt\conf\minion
master: ipaddress or hostname of your salt-master
4. Start the salt-minion
cd C:\Python27\Scripts python salt-minion -l debug
5. On the salt-master accept the new minion's key
sudo salt-key -A
This accepts all unaccepted keys. If you're concerned about security just accept the key for this specific minion.
6. Test that your minion is responding On the salt-master run:
sudo salt '*' test.version
You should get the following response: {'your minion hostname': True}
Packages Management Under Windows 2003 Windows Server 2003 and Windows XP have both reached End of Support. Though Salt is not officially supported on operating systems that are EoL, some functionality may continue to work.
On Windows Server 2003, you need to install optional component "WMI Windows Installer Provider" to get a full list of installed packages. If you don't have this, salt-minion can't report some installed software.
SUSE Installation from the Official SaltStack Repository The SaltStack Repository has packages available for the following platforms:
• SLES 11 SP4
• SLES 12 / SLES 12 SP1 through SP4
• SLES 15
• openSUSE Leap 15.0, 15.1, 42.2, 42.3
• openSUSE Tumbleweed
Instructions are at https://repo.saltproject.io/#suse.
Installation from the SUSE Repository Since openSUSE 13.2, Salt has been available in the primary repositories. With the release of SUSE manager 3 a new repository setup has been created.  The new repo will by systemsmanagement:saltstack, which is the source for newer stable packages. For backward compatibility a linkpackage will be created to the old devel:language:python repo.  All development of suse packages will be done in systemsmanagement:saltstack:testing.  This will ensure that salt will be in mainline suse repo's, a stable release repo and a testing repo for further enhancements.
Installation Salt can be installed using zypper and is available in the standard openSUSE/SLES repositories.
zypper install salt-master zypper install salt-minion
Post-installation tasks openSUSE Master
Post-installation tasks SLES Master
chkconfig salt-master on
rcsalt-master start
chkconfig salt-minion on
rcsalt-minion start
Unstable Release openSUSE For openSUSE Leap or Tumbleweed systems, run the following as root:
zypper install salt salt-minion salt-master
SUSE Linux Enterprise For SLES 15 and above run the following as root:
Initial Configuration Configuring Salt Salt configuration is very simple. The default configuration for the master will work for most installations and the only requirement for setting up a minion is to set the location of the master in the minion configuration file.
The configuration files will be installed to /etc/salt and are named after the respective components, /etc/salt/master, and /etc/salt/minion.
Master Configuration By default the Salt master listens on ports 4505 and 4506 on all interfaces (0.0.0.0). To bind Salt to a specific IP, redefine the "interface" directive in the master configuration file, typically /etc/salt/master, as follows:
- #interface: 0.0.0.0 + interface: 10.0.0.1
After updating the configuration file, restart the Salt master.  See the master configuration reference for more details about other configurable options.
Minion Configuration Although there are many Salt Minion configuration options, configuring a Salt Minion is very simple. By default a Salt Minion will try to connect to the DNS name "salt"; if the Minion is able to resolve that name correctly, no configuration is needed.
If the DNS name "salt" does not resolve to point to the correct location of the Master, redefine the "master" directive in the minion configuration file, typically /etc/salt/minion, as follows:
- #master: salt + master: 10.0.0.1
After updating the configuration file, restart the Salt minion.  See the minion configuration reference for more details about other configurable options.
Proxy Minion Configuration A proxy minion emulates the behaviour of a regular minion and inherits their options.
Similarly, the configuration file is /etc/salt/proxy and the proxy tries to connect to the DNS name "salt".
In addition to the regular minion options, there are several proxy-specific - see the proxy minion configuration reference.
Running Salt 1. Start the master in the foreground (to daemonize the process, pass the -d flag):
salt-master
2. Start the minion in the foreground (to daemonize the process, pass the -d flag):
salt-minion
Having trouble?
The simplest way to troubleshoot Salt is to run the master and minion in the foreground with log level set to debug:
salt-master --log-level=debug
For information on salt's logging system please see the logging document.
Run as an unprivileged (non-root) user
To run Salt as another user, set the user parameter in the master config file.
Additionally, ownership, and permissions need to be set such that the desired user can read from and write to the following directories (and their subdirectories, where applicable):
• /etc/salt
• /var/cache/salt
• /var/log/salt
• /var/run/salt
More information about running salt as a non-privileged user can be found here.
There is also a full troubleshooting guide available.
Key Identity Salt provides commands to validate the identity of your Salt master and Salt minions before the initial key exchange. Validating key identity helps avoid inadvertently connecting to the wrong Salt master, and helps prevent a potential MiTM attack when establishing the initial connection.
Master Key Fingerprint Print the master key fingerprint by running the following command on the Salt master:
salt-key -F master