Skip to content
This repository was archived by the owner on Jan 24, 2024. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions 0000-master-topology.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
- Feature Name: (fill with a unique identifier, ex: my-awesome-feature)
- Start Date: (fill with today's date, YYYY-MM-DD)
- SEP Status: Draft
- SEP PR: (leave this empty)
- Salt Issue: (leave this empty)

# Summary
[summary]: #summary

There is a well proven want and need of Salt users to be able to group minions
into a single master logically and/or physically. Add the ablity
to link master's together and target different masters.

# Motivation
[motivation]: #motivation

There is a well proven want and need of Salt users to be able to group minions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[citation needed]

into a single master logically and/or physically. Historically Synic has been

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

*Syndic

used to achive these kinds of groupings. The intention of this SEP is to create
a more robust solutions which will eventually deprecate Synics by building this
functionality directly into Salt Masters.

# Design
[design]: #detailed-design

Add the ability to define a topology of masters. Each node under topology is a
master. Users will be able to target jobs based on which master the minion is
connected to in addition to our existing targeting options.

```
topology:
- west:
- west-dc-1:
- rack1
- rack2
- rack3
- west-dc-2:
- rack1
- rack3
- rack3
- west-dc-2:
- rack1
- rack3
- rack3
- east:
- east-dc-1:
- rack1
- rack2
- rack3
- east-dc-2:
- rack1
- rack3
- rack3
```


## Alternatives
[alternatives]: #alternatives

What other designs have been considered? What is the impact of not doing this?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here would be a good place to show the equivalent Syndic solution for the example problem, highlighting its issues.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The targeting problem can be trivially solved with minion ids that reflect the topology.

What specifically would this proposal add?


## Unresolved questions
[unresolved]: #unresolved-questions

What parts of the design are still TBD?

# Drawbacks
[drawbacks]: #drawbacks

Why should we *not* do this? Please consider:

- Implementation cost, both in term of code size and complexity
- Integration of this feature with other existing and planned features
- Cost of migrating existing Salt setups (is it a breaking change?)
- Documentation (would Salt documentation need to be re-organized or altered?)


There are tradeoffs to choosing any path. Attempt to identify them here.