You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从自定义Rundeck插件中使用Rundeck数据库

自定义Rundeck插件读写自带数据库的方案

可以通过Rundeck提供的SDK访问其自带的数据库,但不建议直接读写核心数据库表——Rundeck内部表结构会随版本迭代变更,直接操作会让插件与特定版本强耦合,甚至破坏系统稳定性。

推荐的持久化方案

优先使用官方为插件设计的Plugin Data Storage API,这是安全且兼容的标准方式,无需直接接触数据库,SDK会自动处理底层存储适配:

  • 存储插件专属数据时,API会将数据存入Rundeck数据库的插件专用表,避免干扰核心业务表
  • 跨Rundeck版本时无需担心表结构变化,API会做兼容处理

示例Java SDK代码:

import com.dtolabs.rundeck.core.plugins.PluginDataContext;
import com.dtolabs.rundeck.core.plugins.PluginDataStorage;

// 从插件上下文获取数据存储实例
PluginDataStorage storage = pluginContext.getPluginDataStorage();

// 存储数据:指定键、字节数据、内容类型
storage.store("my-plugin-config", "{\"enabled\":true}".getBytes(), "application/json");

// 读取数据
byte[] dataBytes = storage.load("my-plugin-config");
String configJson = new String(dataBytes);

若需直接访问自带数据库(不推荐)

如果业务场景必须直接操作数据库,可通过Rundeck核心上下文获取内置DataSource或JdbcTemplate,但需严格遵守以下规则:

  • 仅操作插件专属的自定义表,绝对禁止修改Rundeck核心表(如execution、job等)
  • 自行处理数据库连接的创建与释放,避免资源泄漏
  • 做好版本兼容测试,不同Rundeck版本的数据库结构可能存在差异

示例Java SDK代码:

import org.springframework.jdbc.core.JdbcTemplate;
import com.dtolabs.rundeck.core.framework.Framework;

// 从Framework实例获取JdbcTemplate
JdbcTemplate jdbcTemplate = framework.getJdbcTemplate();

// 执行查询操作(仅示例自定义表)
String pluginValue = jdbcTemplate.queryForObject(
    "SELECT config_value FROM my_plugin_table WHERE plugin_id = ?",
    String.class,
    "my-custom-plugin"
);

关键提醒

直接操作Rundeck自带数据库属于非官方用法,没有版本兼容性保障,一旦Rundeck升级导致表结构变更,插件很可能失效。因此,除非有特殊业务需求,否则始终优先使用Plugin Data Storage API。

内容的提问来源于stack exchange,提问作者Shatazone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:35:34