Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:

Overview
Salt Project License: Apache v2.0 PyPi Package Downloads PyPi Package Downloads Salt Project Slack Community Salt Project Twitch Channel Salt Project subreddit Follow SaltStack on Twitter
Salt Project Logo

Salt is the world’s fastest, most intelligent and scalable automation engine.

About Salt

Built on python, Salt uses simple and human-readable YAML combined with event-driven automation to deploy and configure complex IT systems. In addition to leveling-up vRealize Automation SaltStack Config, Salt can be found under the hood of products from Juniper, Cisco, Cloudflare, Nutanix, SUSE, and Tieto, to name a few.

About SaltStack

SaltStack was acquired by VMware in 2020. Salt Project remains an open source ecosystem that VMware supports and contributes to.

Download Salt

Salt is tested and packaged to run on CentOS, Debian, RHEL, Ubuntu, MacOS, Windows, and more. Download Salt and get started now.

Salt Project Documentation

Installation instructions, getting started guides, in-depth API documentation, and contributing to Salt.

Security Advisories

Keep an eye on the Salt Project Security Announcements landing page. Salt Project recommends subscribing to the Salt Project Security RSS feed to receive notification when new information is available regarding security announcements.

Other channels to receive security announcements include the Salt Community mailing list and the Salt Community Slack Channel.

Responsibly Reporting Security Vulnerabilities

When reporting security vulnerabilities for Salt or other SaltStack projects, refer to the SECURITY.md file found in this repository.

Engage the Salt Project and The Community

Please be sure to review our Code of Conduct. Also, check out some of our community resources including:

There are lots of ways to get involved in our community. Every month, there are around a dozen opportunities to meet with other contributors and the Salt Core team and collaborate in real time. The best way to keep track is by subscribing to the Salt Project Community Events Calendar on the main https://saltproject.io website.

If you have additional questions, email us at [email protected] or reach out directly to the Community Manager, Janae Andrus via Slack. We’d be glad to have you join our community!

License

Salt is licensed under the Apache 2.0 license. Please see the LICENSE file for the full text of the Apache license, followed by a full summary of the licensing used by external modules.

A complete list of attributions and dependencies can be found here: salt/DEPENDENCIES.md

Comments
  • [WIP] Add fix for pam tests under onedir

    [WIP] Add fix for pam tests under onedir

    What does this PR do?

    What issues does this PR fix or reference?

    Fixes:

    Previous Behavior

    Remove this section if not relevant

    New Behavior

    Remove this section if not relevant

    Merge requirements satisfied?

    [NOTICE] Bug fixes or features added to Salt require tests.

    • [ ] Docs
    • [ ] Changelog - https://docs.saltproject.io/en/master/topics/development/changelog.html
    • [ ] Tests written/updated

    Commits signed with GPG?

    Yes/No

    Please review Salt's Contributing Guide for best practices.

    See GitHub's page on GPG signing for more information about signing commits with GPG.

    opened by dwoz 0
  • Fix __pillar__ access in modules in pillar render

    Fix __pillar__ access in modules in pillar render

    Historically the __pillar__ dunder has never been available or worked in extension modules during pillar render, due to what I can only assume is a bug/oversight in the overly-complex mess of branches and logic in the pillar rendering code. Functionally there is very little reason this shouldn't work, and it even appears like it may have worked at some point, or at least was intended to work by the fact that the ext_pillar data was stuffed right back into opts before attempting to render the remainder of the pillar.

    The missing piece to the puzzle here was that the partially-rendered ext_pillar data wasn't available in the opts dict packed into the salt.loader.minion_mods() call when it was generated, and the fact that the functions weren't reloaded after the pillar dict was updated. This commit fixes both of those things.

    Ensure the minion_mods are always reloaded with the updated opts dict containing the partial pillar data when rendering pillar with ext_pillar_first enabled.

    Signed-off-by: Joe Groocock [email protected]

    Merge requirements satisfied?

    [NOTICE] Bug fixes or features added to Salt require tests.

    • [ ] Docs
    • [x] Changelog - https://docs.saltproject.io/en/master/topics/development/changelog.html
    • [x] Tests written/updated

    Commits signed with GPG?

    Yes

    Please review Salt's Contributing Guide for best practices.

    See GitHub's page on GPG signing for more information about signing commits with GPG.

    opened by frebib 1
  • Allow overriding arbitrary opts with salt-call

    Allow overriding arbitrary opts with salt-call

    Any minion option(s) can be overridden (note this is not a merge), and it can be specified multiple times to set multiple different options. The parser will also accept arbitrarily complex/deep data structures in python/json-compatible syntax. For example:

    $ salt-call --local -o foo='["foo","bar"]' -o bar=1234 config.get foo
    local:
        - foo
        - bar
    $ salt-call --local -o foo='["foo","bar"]' -o bar=1234 config.get bar
    local:
        1234
    

    Signed-off-by: Joe Groocock [email protected]

    What does this PR do?

    Read the commit message

    Merge requirements satisfied?

    • [ ] Docs
    • [x] Changelog - https://docs.saltproject.io/en/master/topics/development/changelog.html
    • [ ] Tests written/updated

    Commits signed with GPG?

    Yes

    Please review Salt's Contributing Guide for best practices.

    See GitHub's page on GPG signing for more information about signing commits with GPG.

    opened by frebib 0
  • Allow passing --update=.. args to raid.present

    Allow passing --update=.. args to raid.present

    mdraid complains loudly if you call raid.create with update= kwargs, even though they are entirely valid for raid.assemble. Given that the user can't influence whether the raid will be assembled or created, helpfully strip out invalid --update=.. args when not assembling an array to avoid any nasty surprises when the raid doesn't exist:

    [INFO    ] Executing state udevraid.present for [/dev/md/all]
    [INFO    ] Executing command mdadm in directory '/root'
    [INFO    ] Executing command 'mdadm' in directory '/root'
    [DEBUG   ] stderr: mdadm: No md superblock detected on /dev/mapper/luks-nvme0n1p2.
    [DEBUG   ] retcode: 1
    [INFO    ] Executing command 'mdadm' in directory '/root'
    [DEBUG   ] stderr: mdadm: No md superblock detected on /dev/mapper/luks-nvme1n1p2.
    [DEBUG   ] retcode: 1
    [INFO    ] Executing command 'mdadm' in directory '/root'
    [DEBUG   ] stderr: mdadm: No md superblock detected on /dev/mapper/luks-nvme2n1p2.
    [DEBUG   ] retcode: 1
    [INFO    ] Executing command mdadm in directory '/root'
    [ERROR   ] Command 'mdadm' failed with return code: 2
    [ERROR   ] stdout: mdadm: :option --update not valid in create mode
    [ERROR   ] retcode: 2
    [ERROR   ] Command 'mdadm' failed with return code: 2
    [ERROR   ] output: mdadm: :option --update not valid in create mode
    [INFO    ] Executing command mdadm in directory '/root'
    [INFO    ] Executing command mdadm in directory '/root'
    [INFO    ] Executing command '/bin/udevadm' in directory '/root'
    [INFO    ] Executing command mdadm in directory '/root'
    [ERROR   ] Raid /dev/md/all failed to be created.
    

    Signed-off-by: Joe Groocock [email protected]

    Merge requirements satisfied?

    [NOTICE] Bug fixes or features added to Salt require tests.

    • [ ] Docs
    • [ ] Changelog - https://docs.saltproject.io/en/master/topics/development/changelog.html
    • [x] Tests written/updated

    Commits signed with GPG?

    Yes

    Please review Salt's Contributing Guide for best practices.

    See GitHub's page on GPG signing for more information about signing commits with GPG.

    opened by frebib 0
  • [BUG] Salt's Wheelclient throws RuntimeError after upgrading to 3005 from 3004

    [BUG] Salt's Wheelclient throws RuntimeError after upgrading to 3005 from 3004

    Description cmd_async method of salt.wheel.WheelClient throws "RuntimeError: The logging options have not been set yet" after upgrading the salt master version to 3005.1 from 3004.2. The complete error message below.

    Failed to configure logging on <SignalHandlingProcess(ProcessFunc(AsyncClientMixin._proc_function_remote, fun=key.accept jid=20221228122743271807), started)>: The logging options have not been set yet. Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/salt/utils/process.py", line 970, in wrapped_run_func salt._logging.setup_logging() File "/usr/lib/python3.6/site-packages/salt/_logging/impl.py", line 942, in setup_logging raise RuntimeError("The logging options have not been set yet.") RuntimeError: The logging options have not been set yet. {'tag': 'salt/wheel/20221228122743271807', 'jid': '20221228122743271807'}

    Setup Salt-master and salt-api service 3005.1 Classic package service running on an Centos Servers hosted in Azure. Salt minion 2016.11.10 running an Centos machine. Using an Python salt Engine to automatically accept salt keys using salt's WheelClient. Pasting the WheelClient's code snippet below

    wclient = salt.wheel.WheelClient(master_opts) return_data = wclient.cmd_async({'fun': 'key.accept', 'match': call_data['deviceId'],'eauth': 'pam','include_denied': True, 'username': pam_username,'password': pam_password })

    NOTE: call_data comes from an api which has to the minion key which is referred as deviceid here.

    Steps to Reproduce the behavior Configure the config file of an Minion to point to master running with version 3005.1. Start the minion service and then accept the key in master using the cmd_async module of salt.wheel.WheelClient. They minion key wont get accepeted and throw the below error.

    >>> wclient.cmd_async({'fun': 'key.accept','match': 'TESTING_KEY_ACCEPTANCE_POST_SALT_UPGRADE_30051_TESTING2','eauth': 'pam','include_denied': True,'username': pam_username,'password': pam_password}) Failed to configure logging on <SignalHandlingProcess(ProcessFunc(AsyncClientMixin._proc_function_remote, fun=key.accept jid=20221228122753942755), started)>: The logging options have not been set yet. Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/salt/utils/process.py", line 970, in wrapped_run_func salt._logging.setup_logging() File "/usr/lib/python3.6/site-packages/salt/_logging/impl.py", line 942, in setup_logging raise RuntimeError("The logging options have not been set yet.") RuntimeError: The logging options have not been set yet. {'tag': 'salt/wheel/20221228122753942755', 'jid': '20221228122753942755'}

    Expected behavior They key must get accepted wihtout any errors. The same is working fine with cmd_sync.

    Versions Report Salt master: (version 3005.1) `Salt Version: Salt: 3005.1

    Dependency Versions: cffi: Not Installed cherrypy: unknown dateutil: 2.4.2 docker-py: Not Installed gitdb: Not Installed gitpython: Not Installed Jinja2: 2.11.1 libgit2: Not Installed M2Crypto: 0.35.2 Mako: Not Installed msgpack: 0.6.2 msgpack-pure: Not Installed mysql-python: Not Installed pycparser: Not Installed pycrypto: 2.6.1 pycryptodome: Not Installed pygit2: Not Installed Python: 3.6.8 (default, Nov 16 2020, 16:55:22) python-gnupg: Not Installed PyYAML: 3.13 PyZMQ: 18.0.1 smmap: Not Installed timelib: Not Installed Tornado: 4.5.3 ZMQ: 4.1.4

    System Versions: dist: centos 7 Core locale: UTF-8 machine: x86_64 release: 3.10.0-1160.76.1.el7.x86_64 system: Linux version: CentOS Linux 7 Core`

    Salt-minion: (version 2016.11.10) `Salt Version: Salt: 2016.11.10

    Dependency Versions: cffi: 1.12.2 cherrypy: Not Installed dateutil: 2.8.0 docker-py: Not Installed gitdb: Not Installed gitpython: Not Installed ioflo: Not Installed Jinja2: 2.7.2 libgit2: Not Installed libnacl: Not Installed M2Crypto: Not Installed Mako: Not Installed msgpack-pure: Not Installed msgpack-python: 0.5.6 mysql-python: Not Installed pycparser: 2.19 pycrypto: 2.6.1 pycryptodome: Not Installed pygit2: Not Installed Python: 2.7.5 (default, Oct 30 2018, 23:45:53) python-gnupg: Not Installed PyYAML: 3.11 PyZMQ: 15.3.0 RAET: Not Installed smmap: Not Installed timelib: Not Installed Tornado: 4.2.1 ZMQ: 4.1.4

    System Versions: dist: centos 7.6.1810 Core machine: x86_64 release: 3.10.0-957.5.1.el7.x86_64 system: Linux version: CentOS Linux 7.6.1810 Core`

    Bug needs-triage 
    opened by anandcrusher 1
Releases(v3005.1-2)
Monitor for any changes in your php application and automatically restart it (suitable for async apps).

PHP-watcher PHP-watcher helps develop long-running PHP applications by automatically restarting them when file changes in the directory are detected.

Sergey Zhuk 373 Dec 21, 2022
🎲Neard is a portable WAMP software stack involving useful binaries, tools and applications for your web development.

About Neard is a portable WAMP software stack involving useful binaries, tools and applications for your web development. It also offers several versi

Neard 335 Dec 22, 2022
A package that allows you to generate simple and fast Docker configurations for your Laravel application!

A package that allows you to generate simple and fast Docker configurations for your Laravel application!

Lucas Nepomuceno 3 Oct 8, 2022
Docker-based workflow management system for Laravel

DevOption Workflows Workflows is a Docker-based workflow management system for Laravel applications. Installation You can install the package via comp

devoption.io 1 Jan 5, 2022
Server automation framework and application

Puppet Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks (such as adding users, inst

Puppet 6.8k Dec 31, 2022
Quickly deploy a seedbox with self-hosted services and a web portal using Docker and docker-compose.

Seedbox Quickly deploy and configure a seedbox with self-hosted services and a web portal using Docker and a single docker-compose.yml file. Screensho

null 6 Dec 7, 2022
Finally a sane way to register available commands and arguments and match your command line in PHP

clue/commander Finally a sane way to register available commands and arguments and match your command line in PHP. You want to build a command line in

Christian Lück 172 Nov 27, 2022
Vagrant is a tool for building and distributing development environments.

Vagrant Website: https://www.vagrantup.com/ Source: https://github.com/hashicorp/vagrant HashiCorp Discuss: https://discuss.hashicorp.com/c/vagrant/24

HashiCorp 24.8k Jan 2, 2023
A modern Docker LAMP stack and MEAN stack for local development

The Devilbox Usage | Architecture | Community | Features | Intranet | Screenshots | Contributing | Logos | License Support for valid https out of the

cytopia 4k Jan 8, 2023
Up and running with small Docker environments

Vessel Up and running with small Docker dev environments. Documentation Full documentation can be found at https://vessel.shippingdocker.com. Install

Shipping Docker 1.1k Dec 17, 2022
A development tool for all your projects that is fast, easy, powerful and liberating

Lando A Liberating Dev Tool For All Your Projects The local development and DevOps tool trusted by professional developers across the galaxy. Free you

Lando 3.6k Jan 7, 2023
Oxygen Builder's better workflow and environment

Oxygen Builder's better workflow and environment Built with ❤️ Official Website | Documentation | Change Log Supporting Artifact is an open source pro

AncientWorks 10 Dec 3, 2022
Laravel 5 with Dockerized Gulp, PHP-FPM, MySQL and nginx using docker-compose

docker-laravel Laravel 5 with Dockerized PHP-FPM, MySQL and nginx using docker-compose Usage Get Composer docker-compose run --rm phpnginx curl -O htt

Harsh Vakharia 83 Feb 8, 2022
Demo of how you can run your Laravel app with Docker Compose. Look at docker-compose.yml and the docker folder. The rest is just a clean Laravel + Horizon install.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Matt 5 Oct 22, 2021
Docker with PHP 7.4 fpm, Nginx, Composer, PhpUnit and MaridaDB

Clean Docker with PHP Docker with PHP 7.4 fpm, Nginx, Composer, PhpUnit and MariaDB Starting app docker-compose up -d Main page

Grzegorz Bielski 7 Nov 17, 2022
Brew PHP switcher is a simple shell script to switch your apache and CLI quickly between major versions of PHP

Brew PHP switcher is a simple shell script to switch your apache and CLI quickly between major versions of PHP. If you support multiple products/projects that are built using either brand new or old legacy PHP functionality. For users of Homebrew (or brew for short) currently only.

Phil Cook 872 Dec 22, 2022
Vagrant-boxes - Setup scripts and docs for my vagrant boxes, primarily aimed at Web/SilverStripe developement

zauberfisch's vagrant boxes zauberfisch/silverstripe-debian64 Debian 10 x86_64 LAMP Box with many extra features, pre-configured for SilverStripe Sour

null 6 Jan 24, 2020
This is a dockerized environment for testing and developing things on the fatfree-core.

F3 development bench This is a dockerized environment for testing and developing things on the fatfree-core. It uses Docker to spin up multiple contai

Fat-Free Framework Factory 9 Sep 20, 2022
ServD - a Docker PHP development environment heavily inspired by Laravel Valet and Laradock

ServD ServD is a Docker PHP development environment heavily inspired by Laravel Valet and Laradock, it supports multiple projects within a working dir

Matt Clinton 2 May 13, 2022