Introduce deploy script
This introduces a program which:
- Detects which states are needed to be deployed on which minions or
nodegroups in order for the latest changes in HEAD to be applied.
For changes to pillar or state files which can be mapped to a role,
the respective role will be returned - a highstate otherwise.
- Optionally, if called with a --mode other than "dry",
tests or applies these changes on the detected minions through the
Salt Master by using the Salt API, after using the same to refresh
the minion pillars and mines.
For this feature, the script expects credentials (Heroes LDAP)
with the correct permissions to be passed (reference our Salt Master
ACL), as well as connectivity to the API port on our Salt Masters.
The program is designed to be usable locally for plain querying of the
planned state.apply operations and only requires the additional module,
authentication and connectivity dependencies if one of Salt modes is used.
It is also designed to be usable both interactively, as well as a library,
should some of its rich functionality be useful for other scripts in the
future.
Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>