123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- =========================
- SaltStack Packaging Guide
- =========================
- Since Salt provides a powerful toolkit for system management and automation,
- the package can be spit into a number of sub-tools. While packaging Salt as
- a single package containing all components is perfectly acceptable, the split
- packages should follow this convention.
- Patching Salt For Distributions
- ===============================
- The occasion may arise where Salt source and default configurations may need
- to be patched. It is preferable if Salt is only patched to include platform
- specific additions or to fix release time bugs. It is preferable that
- configuration settings and operations remain in the default state, as changes
- here lowers the user experience for users moving across distributions.
- In the event where a packager finds a need to change the default configuration
- it is advised to add the files to the master.d or minion.d directories.
- Source Files
- ============
- Release packages should always be built from the source tarball distributed via
- pypi. Release packages should *NEVER* use a git checkout as the source for
- distribution.
- Single Package
- ==============
- Shipping Salt as a single package, where the minion, master, and all tools are
- together is perfectly acceptable and practiced by distributions such as
- FreeBSD.
- Split Package
- =============
- Salt Should always be split in a standard way, with standard dependencies, this lowers
- cross distribution confusion about what components are going to be shipped with
- specific packages. These packages can be defined from the Salt Source as of
- Salt 2014.1.0:
- Salt Common
- -----------
- The `salt-common` or `salt` package should contain the files provided by the
- salt python package, or all files distributed from the ``salt/`` directory in
- the source distribution packages. The documentation contained under the
- ``doc/`` directory can be a part of this package but splitting out a doc
- package is preferred.
- Since salt-call is the entry point to utilize the libs and is useful for all
- salt packages it is included in the salt-common package.
- Name
- ~~~~
- - `salt` OR `salt-common`
- Files
- ~~~~~
- - `salt/*`
- - `man/salt.7`
- - `scripts/salt-call`
- - `tests/*`
- - `man/salt-call.1`
- Depends
- ~~~~~~~
- - `Python 2.6-2.7`
- - `PyYAML`
- - `Jinja2`
- Salt Master
- -----------
- The `salt-master` package contains the applicable scripts, related man
- pages and init information for the given platform.
- Name
- ~~~~
- - `salt-master`
- Files
- ~~~~~
- - `scripts/salt-master`
- - `scripts/salt`
- - `scripts/salt-run`
- - `scripts/salt-key`
- - `scripts/salt-cp`
- - `pkg/<master init data>`
- - `man/salt.1`
- - `man/salt-master.1`
- - `man/salt-run.1`
- - `man/salt-key.1`
- - `man/salt-cp.1`
- - `conf/master`
- Depends
- ~~~~~~~
- - `Salt Common`
- - `ZeroMQ` >= 3.2
- - `PyZMQ` >= 2.10
- - `PyCrypto`
- - `M2Crypto`
- - `Python MessagePack` (Messagepack C lib, or msgpack-pure)
- Salt Syndic
- -----------
- The Salt Syndic package can be rolled completely into the Salt Master package.
- Platforms which start services as part of the package deployment need to
- maintain a separate `salt-syndic` package (primarily Debian based platforms).
- The Syndic may optionally not depend on the anything more than the Salt Master since
- the master will bring in all needed dependencies, but fall back to the platform
- specific packaging guidelines.
- Name
- ~~~~
- - `salt-syndic`
- Files
- ~~~~~
- - `scripts/salt-syndic`
- - `pkg/<syndic init data>`
- - `man/salt-syndic.1`
- Depends
- ~~~~~~~
- - `Salt Common`
- - `Salt Master`
- - `ZeroMQ` >= 3.2
- - `PyZMQ` >= 2.10
- - `PyCrypto`
- - `M2Crypto`
- - `Python MessagePack` (Messagepack C lib, or msgpack-pure)
- Salt Minion
- -----------
- The Minion is a standalone package and should not be split beyond the
- `salt-minion` and `salt-common` packages.
- Name
- ~~~~
- - `salt-minion`
- Files
- ~~~~~
- - `scripts/salt-minion`
- - `pkg/<minion init data>`
- - `man/salt-minion.1`
- - `conf/minion`
- Depends
- ~~~~~~~
- - `Salt Common`
- - `ZeroMQ` >= 3.2
- - `PyZMQ` >= 2.10
- - `PyCrypto`
- - `M2Crypto`
- - `Python MessagePack` (Messagepack C lib, or msgpack-pure)
- Salt SSH
- --------
- Since Salt SSH does not require the same dependencies as the minion and master, it
- should be split out.
- Name
- ~~~~
- - `salt-ssh`
- Files
- ~~~~~
- - `scripts/salt-ssh`
- - `man/salt-ssh.1`
- - `conf/cloud*`
- Depends
- ~~~~~~~
- - `Salt Common`
- - `Python MessagePack` (Messagepack C lib, or msgpack-pure)
- Salt Cloud
- ----------
- As of Salt 2014.1.0 Salt Cloud is included in the same repo as Salt. This
- can be split out into a separate package or it can be included in the
- salt-master package.
- Name
- ~~~~
- - `salt-cloud`
- Files
- ~~~~~
- - `scripts/salt-cloud`
- - `man/salt-cloud.1`
- Depends
- ~~~~~~~
- - `Salt Common`
- - `apache libcloud` >= 0.14.0
- Salt Doc
- --------
- The documentation package is very distribution optional. A completely split
- package will split out the documentation, but some platform conventions do not
- prefer this.
- If the documentation is not split out, it should be included with the
- `Salt Common` package.
- Name
- ----
- - `salt-doc`
- Files
- ~~~~~
- - `doc/*`
- Optional Depends
- ~~~~~~~~~~~~~~~~
- - `Salt Common`
- - `Python Sphinx`
- - `Make`
|