1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# Pitch
* automatically adds/removes threads to meet configured retrieval interval
* restful API to move node immediately to head-of-queue
* syslog udp+file example to catch config change event (ios/junos) and trigger config fetch
* will signal ios/junos user who made change, which output module can (git does) use
* 'git blame' will show for each line who and when the change was made
* restful API to reload list of nodes (GET /nodes/reload)
* restful API to fetch configurations (/nodes/fetch/[NODE] or /nodes/fetch/group/[NODE])
# Install
* early days, but try:
1. apt-get install libsqlite3-dev
2. gem install oxidized
3. oxidized
4. vi ~/.config/oxidized
5. (maybe point to your rancid/router.db or copy it there)
6. oxidized
# API
## Input
* gets config from nodes
* must implement 'connect', 'get', 'cmd'
* 'ssh' and 'telnet' implemented
## Output
* stores config
* must implement 'store'
* 'git' and 'file' (store as flat ascii) implemented
## Source
* gets list of nodes to poll
* must implement 'load'
* source can have 'name', 'model', 'group', 'username', 'password', 'input', 'output', 'prompt'
* name - name of the devices
* model - model to use ios/junos/xyz, model is loaded dynamically when needed (Also default in config file)
* input - method to acquire config, loaded dynamically as needed (Also default in config file)
* output - method to store config, loaded dynamically as needed (Also default in config file)
* prompt - prompt used for node (Also default in config file, can be specified in model too)
* 'sql' and 'csv' (supports any format with single entry per line, like router.db)
## Model
* lists commands to gather from given device model
* can use 'cmd', 'prompt', 'comment', 'cfg'
* cfg is executed in input/output/source context
* cmd is executed in instance of model
* 'junos', 'ios', 'ironware' and 'powerconnect' implemented
|