Rundeck Salt-Step Plugin
Description
A Rundeck NodeStepPlugin that allows Rundeck to delegate tasks to a Salt master by executing the request over salt-api.
Build / Deploy
- To build the project from source, issue:
./gradlew clean build
- The resulting jar files can be found under
build/libs
. - Copy the
rundeck-salt-plugin-<version>.jar
file to your$RDECK_BASE/libext
folder - Restart Rundeck
- You should now have an additional "salt remote" option when configuring jobs
Configuration
- Rundeck node resource IDs MUST match salt minion IDs
Usage
The following job-level params must be configured to provide authentication input fields:
SALT_USER
- standard input field, required.SALT_PASSWORD
- secure input field, required. NOTE the option should not be set as a secure remote authentication option
Additionally:
- Workflow configuration must be set to dispatch to nodes.
Remote execution over salt-api
NOTE: This plugin leverages salt-api, which requires its own additional setup. For more information on how to setup salt-api please refer to its documentation which can be found here.
This plugin requires three properties that need to be configured for each step:
SALT_API_END_POINT
: the URL of the salt-api endpoint (e.g. https://localhost:8000)Function
: the function to be passed to the salt-api call (excluding the target) -- For example, if you entertest.ping
for the function value, the resulting salt call will besalt <yourHostName> test.ping
. The target will always default to the hostname of the Rundeck server.SALT_API_EAUTH
: the authentication mechanism that should be used by salt-api -- This would be the equivalent to the-a
parameter being passed on the command line (e.g.salt -a pam <target> test.ping
)SALT_API_VERSION
(optional): The expected version of salt-api. Defaults to latest if left blank.
Troubleshooting
- Ensure that your salt-api setup is fully functional before attempting to execute jobs with this plugin
- Set the job output level to
debug
to print the raw JSON data and returned output - Ensure the API endpoint is correct -- http vs https
Setting up salt return response parsers
=================== This plugin interacts with salt and salt-api. By default, it requests JSON payloads. YAML configuration files are used to determine how it should parse the output and behave with respect to exit codes, standard output, and standard error.
YAML Configuration File Format
handlerMappings:
<salt module>[.<salt function>]: <java object implementing org.rundeck.plugin.salt.output.SaltReturnHandler>
Salt-step is configured in two locations:
src/main/resources/defaultReturners.yaml
rundeck-config.properties
: The_saltStep.returnHandlers_
property accepts a comma separated list of additional configuration files
Developer Guidelines
Thanks for contributing to the project!
Code style
- Same line braces.
- 4 spaces for tabs.
- Clarity over brevity.
- When in doubt, follow what's already there.
Javadocs
- At the very minimum, please ensure that class-level and method-level javadocs are present.
Unit tests
- While we don't expect 100% coverage, we do expect repeatable, automated tests.
- Include unit tests that confirm that your change performs as expected (e.g. new feature or bug fix).
Before submitting a pull request
- Merge the latest master branch before submitting a pull request.
- Perform a build (
./gradlew clean build
) and confirm that all tests are passing. - Ensure that all documentation (e.g.
README.md
or other supporting links) is updated. - Rebase changes into as few commits as makes sense.
- Ensure that all commit messages accurately describe the changes.
### Submitting a pull request
- Submit a pull request to the master branch of this project.
- Ensure that the pull request has a clear description of the included changes.