saltstack / saltstack/salt

[FEATURE REQUEST] Separate package repositories into the previous per major version structure

Open
#67,778 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature needs-triage
Dominant language
Python
Stars
15.7k
Forks
5.6k
Avg merge
2d 44m
Merged PRs (30d)
80

Description

Is your feature request related to a problem? Please describe.
Currently, all salt packages are in a single repo. That means both LTS and STS releases are in the same repo. Anyone who wants to mirror the repository, and only target a specific version, needs to do extra work that is often hacky to separate the different versions. Specifically, someone who wants to stick to LTS only releases and mirror.

For RPMs I see there is an attempt to implement a workaround with excludes, which also creates a timebomb for someone in the future using an outdated repo file. This is hacky.

https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.repo

[salt-repo-3006-lts]
name=Salt Repo for Salt v3006 LTS
baseurl=https://packages.broadcom.com/artifactory/saltproject-rpm/
skip_if_unavailable=True
priority=10
enabled=1
enabled_metadata=1
gpgcheck=1
exclude=*3007* *3008* *3009* *3010*
gpgkey=https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public

[salt-repo-3007-sts]
name=Salt Repo for Salt v3007 STS
baseurl=https://packages.broadcom.com/artifactory/saltproject-rpm/
skip_if_unavailable=True
priority=10
enabled=0
enabled_metadata=1
gpgcheck=1
exclude=*3006* *3008* *3009* *3010*
gpgkey=https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public

[salt-repo-latest]
name=Salt Repo for Salt LATEST release
baseurl=https://packages.broadcom.com/artifactory/saltproject-rpm/
skip_if_unavailable=True
priority=10
enabled=0
enabled_metadata=1
gpgcheck=1
gpgkey=https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public

Unfortunately the above can't easily be implemented in a mirroring tool such as Foreman/Satellite.

And Debian/Ubuntu

https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources

X-Repolib-Name: Salt Project
Description: Salt has many possible uses, including configuration management.
  Built on Python, Salt is an event-driven automation tool and framework to deploy,
  configure, and manage complex IT systems. Use Salt to automate common
  infrastructure administration tasks and ensure that all the components of your
  infrastructure are operating in a consistent desired state.
  - Website: https://saltproject.io
  - Public key: https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public
Enabled: yes
Types: deb
URIs: https://packages.broadcom.com/artifactory/saltproject-deb
Signed-By: /etc/apt/keyrings/salt-archive-keyring.pgp
Suites: stable
Components: main

For Debina/Ubuntu, its one repo, there is no separation workaround like for RPMs.

Describe the solution you'd like
Repository per major version as before

Describe alternatives you've considered
Users can use the repos directly, and use tools such as dnf versionlock or apt-mark hold. However, for anyone wanting to mirror only LTS releases, the only alternative is implementing multi staged mirror where some middleware implements package version filtering.

Additional context
Most popular OSS ships separate repositories for major versions of their software

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the salt.repo and salt.sources files linked in the issue, along with the current package repository layout. Determine how repositories can be separated per major version for RPM and Debian/Ubuntu while supporting mirroring. Done means users can mirror only an LTS or selected major-version repository without filtering packages themselves.

Written by the indexing model from the issue text.

Assessment

Tech stack
debian, ubuntu
Domain
devops, infrastructure, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.