Linux (RPM)

These instructions explain how to install Salt rpms on operating systems that are RHEL-like (using dnf install methods).

Note

Salt packages for SUSE and Photon OS are provided via their own OS package repositories. SUSE and Photon OS create their own Salt packages that aren’t onedir (relenv) based, and are patched to be further integrated with their respective operating systems.

Salt Project does not provide custom directions for working with zypper, tdnf, or other non-DNF package managers to install packages from the Salt Project RPM repository.

RPM packages, hosted by Salt Project, are still tested on SUSE and Photon OS operating systems via our CI/CD.

For a list of supported and tested operating systems, for running Salt, see Salt supported operating systems.

What is onedir?

Onedir is the Salt Project’s new packaging system. Onedir packages of Salt include the version of Python needed to run Salt and Salt’s required dependencies.

Beginning with the release of Salt 3006 LTS (Sulfur), the Salt Project has phased out classic package builds for supported operating systems. Update your Salt infrastructure to the onedir packages as soon as possible. See Upgrade to onedir for more information.

Before you start

Before installing Salt on your operating system, ensure that you first:

Install Salt RPMs

  1. Run the following command to install the Salt Project repository:

    curl -fsSL https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo | sudo tee /etc/yum.repos.d/salt.repo
    

    Note

    Because of the presence of classic packages of Salt in EPEL, it’s possible that when you download the package from EPEL, it instead downloads classic packages of older versions of Salt instead of the onedir packages.

    During depsolving, when choosing the best provider among several, dnf respects the priority of each provider’s repository. The value is an integer from 1 to 99, with 1 being the most preferred repository and 99 the least preferred. By default all repositories have the priority of 80.

    EPEL was treating the Salt repository as 99. To resolve this issue, Salt has changed its priority level to 10 for RHEL 8 and 9.

  2. Run sudo dnf clean expire-cache to clear the repository metadata.

  3. Install the salt-minion, salt-master, or other Salt components:

    Available installs:

    sudo dnf install salt-master
    sudo dnf install salt-minion
    sudo dnf install salt-ssh
    sudo dnf install salt-syndic
    sudo dnf install salt-cloud
    sudo dnf install salt-api
    

    If wanting to install by a target point release, append the specific Salt full release version. For example:

    sudo dnf install salt-master-3006.9
    sudo dnf install salt-minion-3006.9
    sudo dnf install salt-ssh-3006.9
    sudo dnf install salt-syndic-3006.9
    sudo dnf install salt-cloud-3006.9
    sudo dnf install salt-api-3006.9
    

    dnf versionlock can be used to pin to minor versions, if wanting to be excluded during dnf upgrade runs on a system.

    sudo dnf install 'dnf-command(versionlock)'
    
    sudo dnf versionlock add salt
    sudo dnf versionlock add salt-master
    sudo dnf versionlock add salt-minion
    sudo dnf versionlock add salt-ssh
    sudo dnf versionlock add salt-syndic
    sudo dnf versionlock add salt-cloud
    sudo dnf versionlock add salt-api
    

    Warning

    STS not recommended for Production

    Salt Project recommends deploying LTS releases for Production environments.

    If users would like to restrict their installs to the Salt 3007 STS point releases, these install steps include enabling Salt 3007 STS release downloads.

    # Enable the Salt 3007 STS repo
    sudo dnf config-manager --set-disable salt-repo-*
    sudo dnf config-manager --set-enabled salt-repo-3007-sts
    

    Available installs:

    sudo dnf install salt-master
    sudo dnf install salt-minion
    sudo dnf install salt-ssh
    sudo dnf install salt-syndic
    sudo dnf install salt-cloud
    sudo dnf install salt-api
    

    If wanting to install by a target point release, append the specific Salt full release version. For example:

    sudo dnf install salt-master-3007.1
    sudo dnf install salt-minion-3007.1
    sudo dnf install salt-ssh-3007.1
    sudo dnf install salt-syndic-3007.1
    sudo dnf install salt-cloud-3007.1
    sudo dnf install salt-api-3007.1
    

    dnf versionlock can be used to pin to minor versions, if wanting to be excluded during dnf upgrade runs on a system.

    sudo dnf install 'dnf-command(versionlock)'
    
    sudo dnf versionlock add salt
    sudo dnf versionlock add salt-master
    sudo dnf versionlock add salt-minion
    sudo dnf versionlock add salt-ssh
    sudo dnf versionlock add salt-syndic
    sudo dnf versionlock add salt-cloud
    sudo dnf versionlock add salt-api
    

    Warning

    STS not recommended for Production

    Salt Project recommends deploying LTS releases for Production environments.

    If users would like to leave installs to come from either LTS or STS, whichever major version is latest.

    # Enable the Salt LATEST repo
    sudo dnf config-manager --set-disable salt-repo-*
    sudo dnf config-manager --set-enabled salt-repo-latest
    

    Available installs:

    sudo dnf install salt-master
    sudo dnf install salt-minion
    sudo dnf install salt-ssh
    sudo dnf install salt-syndic
    sudo dnf install salt-cloud
    sudo dnf install salt-api
    

    If wanting to install by a target point release, append the specific Salt full release version. For example:

    sudo dnf install salt-master-3007.1
    sudo dnf install salt-minion-3007.1
    sudo dnf install salt-ssh-3007.1
    sudo dnf install salt-syndic-3007.1
    sudo dnf install salt-cloud-3007.1
    sudo dnf install salt-api-3007.1
    

    dnf versionlock can be used to pin to minor versions, if wanting to be excluded during dnf upgrade runs on a system.

    sudo dnf install 'dnf-command(versionlock)'
    
    sudo dnf versionlock add salt
    sudo dnf versionlock add salt-master
    sudo dnf versionlock add salt-minion
    sudo dnf versionlock add salt-ssh
    sudo dnf versionlock add salt-syndic
    sudo dnf versionlock add salt-cloud
    sudo dnf versionlock add salt-api
    
  4. Enable and start the Salt services:

    Available services:

    sudo systemctl enable salt-master && sudo systemctl start salt-master
    sudo systemctl enable salt-minion && sudo systemctl start salt-minion
    sudo systemctl enable salt-syndic && sudo systemctl start salt-syndic
    sudo systemctl enable salt-api && sudo systemctl start salt-api
    

    Note

    When you install a onedir version of Salt (3006 and later), Salt installs its own local version of Python and the dependencies needed for the core functionality of Salt.

    After installing a onedir verison of Salt, your system has both a global version of Python at the system level and a local version of Python used by Salt. This architecture change means that the Salt onedir paths for Python are different and you need to change how you install third-party Python dependencies that you use with Salt, including your state files. See Install dependencies for more information.

After installing Salt on your operating system, you need to complete the following post-installation steps:

Browse the repo