SALVE Configuration Deployment Language
Project description
SALVE
SALVE takes files and directories in a git repository, and handles the messy process of deploying those files onto a machine. It is safer to use than shell scripts in a number of ways, and guarantees idempotence – an oft-sought property for configuration management tools – for a wide class of deployment actions. It also backs up the preexisting versions of files that it changes when possible so that you can recover them if necessary at a later date.
More information is available at the SALVE Website.
How do I use it?
SALVE is a language, but also a compiler for that language written in python. You write “manifests” which describe where your files are meant to go, and SALVE validates that you can put them where you want before doing anything at all. It means learning a new language, but it also lets you specify how your config should be deployed in a more natural way, and protects you from a wide range of dangerous errors. The language is small and simple enough that you can learn all of the important parts in a few minutes, and answer any remaining questions in under half an hour.
To start writing manifests, you can go to the Quick-Start Guide. For a more detailed description of the SALVE language, the Language Page and the Examples Page are good resources.
Once you have a manifest you want to run, simply do a salve deploy with them. If you have installed the pip package, you can run
salve deploy –manifest path/to/root.manifest
or, if you are using the git repo as your source
python SALVE/salve.py deploy –manifest path/to/root.manifest
What do I need to run it?
SALVE is fully compatible with Python 2.6, 2.7, 3.2, 3.3, 3.4, and 3.5. It also works on pypy and pypy3.
It has no dependencies on python packages, so as long as you have one of these versions of Python installed, you can run SALVE. That means that you can always pull down the git repo and run it even on machines that don’t have pip or easy_install.
Python 2.6 Support
Python 2.6 is supported, but because OptParse is deprecated in Python 3.x, SALVE depends upon argparse.
To run SALVE with Python 2.6, you will need to install the argparse package, or do a pip or easy_install of salve to pull in the dependency automatically.
Roadmap
The Roadmap has been replaced with GitHub issues.
Changelog
- 2.4.1
SALVE now uses the python standard library for logging, rather than custom logging
Entire codebase (including tests) is now PEP8 and passes flake8
Significant refactoring to improve Code Climate scoring
- 2.4.0
Paths can be expanded relative to the manifest being processed, rather than relative to the root manifest (this will become the default in version 3)
- 2.3.1
Fixes to setuptools usage
Change markdown documents to reST
- 2.3.0
Support for Python 2.6 (with argparse installed)
Primary Attribute style blocks
Filesys abstraction layer
Removed SALVE_ROOT automatic variable
Relocated default_settings.ini to salve/default_settings.ini
Default directory (without override) is directory of root manifest
- 2.2.0
Travis and Coveralls integration
Improved internal logging and context handling
Support for Python 3
- 2.1.0
Numerous log levels and output controls
Default attributes, which behave like the old 1.x version common attributes
Increased the context information produced when errors are raised
Regained code coverage in tests
Made the codebase PEP8 compliant (as per pep8 v1.2)
- 2.0.0
Backups are now stored in a flat dir by hash, resolving some dir/file conflict issues
Change to backup logfile timestamp format, more human readable
Old python salve.py usage is now python salve.py deploy, and added stub python salve.py backup
Switched to argparse – now incompatible with python 2.6.x without libraries
common block attributes are now global, and have precedence over block-defined attributes
Action verification checks and warnings on failures and skips
- 1.1.0
Large expansions to the testsuite
No SALVE actions are performed through the shell anymore
Permissions are now checked before actions are executed so that insufficient permissions will not crash the entire run
Error messages now take the common [filename], line [lineno]: [message] format
- 1.0.3
Fixes major bug with dir copy not triggering file backups
Internal refactoring and cleanup in Blocks and Actions
- 1.0.2
Fewer actions rely on shell commands and use shutil instead
Underspecifying an action no longer causes a failure for chown and chmod, but skips these actions instead
File create now does a touch -a instead of a touch, so that access time is changed instead of modified time
- 1.0.1
Removed aggressive backups behavior that backed up directories and files on creation
Improved error reporting at levels of execution above the parser
- 1.0.0
Addition of backups for overwritten files
Addition of SALVE_USER_PRIMARY_GROUP variable
Completed test coverage
- beta 0.1.0
Addition of directory blocks
- alpha 0.0.2
Expansion of relative paths
Fixes for configuration templating in blocks
Checks EUID before attempting chown
- alpha 0.0.1
Basic functionality for file blocks and manifest blocks
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.