This is a plugin for Rundeck >= 3.3.7-20201208 that provide the ability to add a nodestep with Groovy SQL scripts that will be executed with using jdbc connection on the Database.
./gradle clean build
Copy the rundeck-jdbc-executor-plugin-<version>.jar file to the libext/ directory inside your Rundeck installation.
(${RDECK_BASE}/libext is for WAR, TOMCAT, and /var/lib/rundeck/libext is for RPM, DEB)
Also appropriate jdbc driver, groovy-sql-<version>.jar and groovy-jsr223-<version>.jar (tested with groovy-sql-2.4.21.jar and groovy-jsr223-2.4.21.jar) must be added to the lib/ directory. (${RDECK_BASE}/libis for WAR, TOMCAT, and/var/lib/rundeck/lib` is for RPM, DEB.)
To configure connection to the database add the following parameters to the node description in Rundeck Project resourses.xml:
One of:
db-type: Database type. ORACLE and MYSQL has been tested. Seecom.github.strdn.rundeck.plugin.jdbcexecutor.DBTypesfor full list of supported databasesdriver-class-name: The fully-qualified name of the driver class. If provided,db-typewill be ignored.
jdbc-connect : jdbc connection string
jdbc-username : database account name for connections
jdbc-password : password or
jdbc-password-storage-path for using password from Rundeck key storage
node-executor="jdbc-command" (optional) for executing Groovy SQL scripts using Rundeck 'Command' tab.
jdbc-command node executor also can be set in the project.properties file for using jdbc-command executor for all project nodes: service.NodeExecutor.default.provider=jdbc-command
e.g.:
<node name="remotehost" node-executor="jdbc-command" db-type="oracle" jdbc-connect="jdbc:oracle:thin:@remotehost:1521:ee122" jdbc-username="system" jdbc-password="system" description="" tags="" hostname="remotehost" osArch="amd64" osFamily="unix" osName="Linux" osVersion="" username="root"/>- add a "Groovy SQL script executor" step to Rundeck job.
- specify "script source" in the node step:
- inline (default)
- file
with 'inline' option add script body to "Groovy SQL inline script" area
with 'file' option specify path to the script file in "Groovy SQL script path" area
- "Script args" is optional
simple script example (with Oracle Database):
System.out.println("args =" + args.toString())
def query = "select username, account_status from dba_users where username = " + "'" + args[0] +"'";
sql.eachRow(query) { tp -> println(tp)}
query = "select operation, to_char(start_time, 'DD-MM-YYYY HH24-MI-SS') st, STATUS from DBA_OPTSTAT_OPERATIONS order by start_time desc";
sql.eachRow(query) { tp -> println([tp.operation, tp.st, tp.status])}