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. See com.github.strdn.rundeck.plugin.jdbcexecutor.DBTypes
for full list of supported databasesdriver-class-name
: The fully-qualified name of the driver class. If provided, db-type
will 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:
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])}