Concepts¶
This section outlines key concepts related to Salt extensions.
Salt extension¶
Salt extensions are pip
-installable Python packages that hook into Salt’s module
loading system. They function similarly to custom modules found in salt://_modules
, salt://_states
etc., but with additional benefits like a dedicated testing framework and versioned releases. However, they must be installed on each node individually.
Great module migration¶
The Salt Project team has embarked on a significant transformation known as the “Great Module Migration.” This initiative involves moving many modules, which were previously part of the core Salt distribution, into separate extensions. While this shift promises to streamline Salt’s core, it also means that many modules will no longer be maintained directly by the Salt team. Instead, their future now depends on community contributors.
Timeline and key events¶
February 2016: Salt extensions were introduced with the release of Salt 2016.9.
November 2020: A major update to Salt extensions was released in Salt 3003. Watch the Salt Extension Overview video for more details.
July 2022: Tom Hatch submitted a SEP to migrate numerous built-in modules to extensions.
October 2023: A project board was created to track the migration process.
December 2023: The Broadcom event forced an immediate shift in strategy, leading to the announcement that there won’t be any deprecation period for community-designated modules.
January 2024: A list of modules to be extracted was opened for public comment. Take your time to review it. The modules are being migrated into the salt-extensions community org.
February 2024: The Great Module Purge PR was created.
April 2024: The Great Module Purge PR was merged, making 3008 the target release.
Why this change?¶
This drastic change is driven by several key goals:
Streamline Maintenance: Reducing the core Salt codebase makes it easier to maintain and improve.
Deprecate Obsolete Modules: Modules that are no longer relevant or maintained are bulk-deprecated.
Decoupled Releases: Separating modules from the core Salt release cycle allows for faster updates and better backporting. For extensions that are pure Python, only a single artifact will need to be released, rather than dozens per release.
Efficient Salt Distributions: Release platform-specific versions of Salt that are smaller and more efficient.
Faster Development: With fewer modules in the core, testing and review times will decrease, accelerating development.
Categories of modules¶
The migration splits modules into three categories:
Core modules: These will remain within the Salt codebase and follow the Salt release cycle.
Supported modules (extended core): These modules will move to their own repositories within the
salt-extensions
GitHub organization, where they can be maintained separately by core maintainers.
Community Modules: These will be removed from the Salt Core codebase. Community members can take over their maintenance, either in the community-run Salt Extensions GitHub organization or in their own repositories.
Why you should get involved¶
In conclusion, this migration represents a shift in how Salt is maintained and developed. It opens the door for users and organizations to have a direct impact on the tools they rely on. If you use any of the modules categorized as community modules, their future depends on people like you. By becoming a maintainer or contributor, you can ensure that the modules you depend on continue to thrive and evolve.
GitHub organization¶
The salt-extensions GitHub organization was established to offer a community-driven, centralized hub for discovering, creating and maintaining Salt extensions. This organization aims to simplify the development and release process for both new extensions and modules extracted from Salt core starting with the 3008
release.
Do you care about a set of modules that will be removed from Salt core? Do you want to publish awesome new Salt functionality? Getting involved is easy!
Copier template¶
The salt-extension-copier
template simplifies the creation and maintenance of Salt extensions. Based on user inputs, it generates a custom boilerplate for anyone to develop new Salt functionality and allows for automated updates when new template versions are released.
Very important: You don’t need to publish within the organization to use it – it works for individual projects too!