Skip to content

Commit d4563ee

Browse files
committed
docs: add documentation for module workflow tools
- Document --name flag for module get command - Document --module flag for database create command - Add Custom Module Development section for RE8+ - Document validate, inspect, and package commands - Add module.json format reference
1 parent 67ef7b1 commit d4563ee

File tree

1 file changed

+162
-2
lines changed

1 file changed

+162
-2
lines changed

docs/src/enterprise/core-resources/modules.md

Lines changed: 162 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@ redisctl enterprise module list -o json
2424
## Get Module Details
2525

2626
```bash
27-
# Get details for a specific module
27+
# Get details for a specific module by UID
2828
redisctl enterprise module get <module_uid>
2929

30+
# Get module by name (case-insensitive)
31+
redisctl enterprise module get --name search
32+
redisctl enterprise module get --name ReJSON
33+
3034
# Get specific fields
31-
redisctl enterprise module get <module_uid> -o json | jq '{name, version, capabilities}'
35+
redisctl enterprise module get --name search -o json -q '{name: module_name, version: semantic_version}'
3236
```
3337

3438
## Upload Module
@@ -92,6 +96,11 @@ redisctl enterprise module list -o json | jq '.[] | select(.module_name == "sear
9296
To enable modules when creating a database:
9397

9498
```bash
99+
# Using the --module flag (recommended)
100+
redisctl enterprise database create --name my-search-db --memory 1073741824 \
101+
--module search --module ReJSON
102+
103+
# Using JSON data
95104
redisctl enterprise database create --data '{
96105
"name": "my-search-db",
97106
"memory_size": 1073741824,
@@ -112,3 +121,154 @@ redisctl enterprise database update-modules <db_id> --data '{
112121
]
113122
}'
114123
```
124+
125+
## Custom Module Development (RE8+)
126+
127+
Redis Enterprise 8.x uses a new native module packaging format. The following tools help with custom module development and packaging.
128+
129+
### Validate Module Metadata
130+
131+
Validate a `module.json` file against the Redis Enterprise schema before packaging:
132+
133+
```bash
134+
# Basic validation
135+
redisctl enterprise module validate ./module.json
136+
137+
# Example output:
138+
# Validating: ./module.json
139+
#
140+
# v module_name: jmespath
141+
# v version: 300
142+
# v semantic_version: 0.3.0
143+
# v min_redis_version: 7.0.0
144+
# v compatible_redis_version: 8.0.0
145+
# v commands: 33 commands defined
146+
# v capabilities: 7 capabilities
147+
#
148+
# v Module metadata is valid for Redis Enterprise 8.x
149+
150+
# Strict mode (require all recommended fields)
151+
redisctl enterprise module validate ./module.json --strict
152+
```
153+
154+
**Validation checks:**
155+
- Required fields: `module_name`
156+
- Recommended fields: `version`, `semantic_version`, `min_redis_version`
157+
- Important for RE8: `compatible_redis_version` (required for upgrade tests)
158+
- Commands and capabilities definitions
159+
160+
### Inspect Module Package
161+
162+
Inspect a packaged module zip file to verify its structure and contents:
163+
164+
```bash
165+
# Basic inspection
166+
redisctl enterprise module inspect ./redis-jmespath.Linux-x86_64.0.3.0.zip
167+
168+
# Example output:
169+
# Package: redis-jmespath.Linux-x86_64.0.3.0.zip
170+
#
171+
# Files:
172+
# module.json (6.2 KB)
173+
# jmespath.so (6.5 MB)
174+
#
175+
# Metadata:
176+
# Name: jmespath
177+
# Display: JMESPath
178+
# Version: 0.3.0 (300)
179+
# Min Redis: 7.0.0
180+
# Compatible: 8.0.0
181+
# Commands: 33
182+
# Capabilities: types, replica_of, backup_restore, ...
183+
#
184+
# v Package structure is valid for RE8 user_defined_modules
185+
186+
# Show all commands
187+
redisctl enterprise module inspect ./module.zip --full
188+
```
189+
190+
**Structure validation:**
191+
- Files must be at zip root (no subdirectories)
192+
- Must contain `module.json`
193+
- Must contain `.so` module binary
194+
195+
### Package Module
196+
197+
Create an RE8-compatible module zip package:
198+
199+
```bash
200+
# Basic packaging
201+
redisctl enterprise module package \
202+
--module ./libredis_jmespath.so \
203+
--metadata ./module.json \
204+
--out ./dist/redis-jmespath.Linux-x86_64.0.3.0.zip
205+
206+
# Package with validation
207+
redisctl enterprise module package \
208+
--module ./module.so \
209+
--metadata ./module.json \
210+
--out ./package.zip \
211+
--validate
212+
```
213+
214+
### module.json Format
215+
216+
The `module.json` file describes your module for Redis Enterprise:
217+
218+
```json
219+
{
220+
"module_name": "jmespath",
221+
"display_name": "JMESPath",
222+
"version": 300,
223+
"semantic_version": "0.3.0",
224+
"min_redis_version": "7.0.0",
225+
"compatible_redis_version": "8.0.0",
226+
"author": "Your Name",
227+
"description": "JMESPath query support for Redis",
228+
"license": "MIT",
229+
"command_line_args": "",
230+
"capabilities": [
231+
"types",
232+
"replica_of",
233+
"clustering",
234+
"backup_restore"
235+
],
236+
"commands": [
237+
{
238+
"command_name": "JMESPATH.QUERY",
239+
"command_arity": -3,
240+
"first_key": 1,
241+
"last_key": 1,
242+
"step": 1,
243+
"flags": ["readonly"]
244+
}
245+
]
246+
}
247+
```
248+
249+
**Key fields:**
250+
- `version`: Numeric version (e.g., 300 for 0.3.0)
251+
- `semantic_version`: Human-readable version string
252+
- `compatible_redis_version`: Maximum Redis version tested (important for RE8 upgrades)
253+
- `commands`: Full command metadata including arity, key positions, and flags
254+
255+
### Deploying Custom Modules
256+
257+
Custom modules can be deployed via:
258+
259+
1. **Bootstrap** - Using `user_defined_modules` in cluster init:
260+
```bash
261+
redisctl enterprise workflow init-cluster \
262+
--name my-cluster \
263+
--username [email protected] \
264+
--password secret \
265+
--data '{
266+
"user_defined_modules": [
267+
{"url": "https://host/redis-jmespath.zip"}
268+
]
269+
}'
270+
```
271+
272+
2. **Admin UI** - Upload via Settings > Redis Modules
273+
274+
3. **Kubernetes** - Using `userDefinedModules` in RedisEnterpriseCluster spec

0 commit comments

Comments
 (0)