oxidized 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Dockerfile +8 -4
- data/Gemfile.lock +1 -1
- data/README.md +28 -4
- data/bin/console +0 -0
- data/extra/auto-reload-config.runit +12 -0
- data/extra/oxidized-report-git-commits +1 -1
- data/extra/oxidized.runit +2 -0
- data/lib/oxidized/cli.rb +1 -1
- data/lib/oxidized/input/ssh.rb +7 -2
- data/lib/oxidized/model/aosw.rb +1 -1
- data/lib/oxidized/model/ciscosmb.rb +4 -1
- data/lib/oxidized/model/model.rb +1 -1
- data/lib/oxidized/source/http.rb +3 -0
- data/lib/oxidized/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdb31290367c66dd2c76fe99a93efa832e676446
|
4
|
+
data.tar.gz: 23e3a5a6c42f603d72e8266f2b705e03edec502b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48675858978583b89c86a3943fe4f95a78d44eedffe4ae59a0e624a608707a9e85ad93277e3bd878710777208bc45100b10dc8fd9824f67fe476d0db9577ed41
|
7
|
+
data.tar.gz: 4f2dfe9e24f3e6f9afe878c5cf786c89701aaeb531966d37dd2e37e188be6069cbca9358f3a61b6bf9db8cf4e02c5261bbe45d90f2625784445cec127427b8bf
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 0.11.0
|
2
|
+
- FEATURE: ssh proxycommand (by @ElvinEfendi)
|
3
|
+
- FEATURE: basic auth in HTTP source (by @laf)
|
4
|
+
- BUGFIX: do not inject string to output before model gets it
|
5
|
+
- BUGFIX: store pidfile in oxidized root
|
6
|
+
|
1
7
|
# 0.10.0
|
2
8
|
- FEATURE: Various refactoring (by @ElvinEfendi)
|
3
9
|
- FEATURE: Ciena SOAS support (by @jgroom33)
|
data/Dockerfile
CHANGED
@@ -1,11 +1,15 @@
|
|
1
|
-
FROM
|
1
|
+
FROM phusion/baseimage:0.9.18
|
2
2
|
MAINTAINER Samer Abdel-Hafez <sam@arahant.net>
|
3
3
|
|
4
|
-
RUN apt-
|
5
|
-
apt-get
|
4
|
+
RUN add-apt-repository ppa:brightbox/ruby-ng && \
|
5
|
+
apt-get update && \
|
6
|
+
apt-get install -y ruby2.1 ruby2.1-dev libsqlite3-dev libssl-dev pkg-config make cmake
|
6
7
|
|
7
8
|
RUN gem install oxidized oxidized-web --no-ri --no-rdoc
|
8
9
|
|
9
10
|
RUN apt-get remove -y ruby-dev pkg-config make cmake
|
10
11
|
|
11
|
-
RUN apt-get -y autoremove
|
12
|
+
RUN apt-get -y autoremove
|
13
|
+
|
14
|
+
ADD extra/oxidized.runit /etc/service/oxidized/run
|
15
|
+
ADD extra/auto-reload-config.runit /etc/service/auto-reload-config/run
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -7,8 +7,8 @@ Oxidized is a network device configuration backup tool. It's a RANCID replacemen
|
|
7
7
|
* automatically adds/removes threads to meet configured retrieval interval
|
8
8
|
* restful API to move node immediately to head-of-queue (GET/POST /node/next/[NODE])
|
9
9
|
* syslog udp+file example to catch config change event (ios/junos) and trigger config fetch
|
10
|
-
* will signal ios/junos user who made change, which output
|
11
|
-
* 'git blame' will
|
10
|
+
* will signal ios/junos user who made change, which output modules can use (via POST)
|
11
|
+
* The git output module uses this info - 'git blame' will for each line show who made the change and when
|
12
12
|
* restful API to reload list of nodes (GET /reload)
|
13
13
|
* restful API to fetch configurations (/node/fetch/[NODE] or /node/fetch/group/[NODE])
|
14
14
|
* restful API to show list of nodes (GET /nodes)
|
@@ -144,7 +144,7 @@ Maps define how to map a model's fields to model [model fields](https://github.c
|
|
144
144
|
|
145
145
|
First create the directory where the CSV ```output``` is going to store device configs and start Oxidized once.
|
146
146
|
```
|
147
|
-
mkdir ~/.config/oxidized/configs
|
147
|
+
mkdir -p ~/.config/oxidized/configs
|
148
148
|
oxidized
|
149
149
|
```
|
150
150
|
|
@@ -230,6 +230,11 @@ rvm use --default 2.1.2
|
|
230
230
|
root@bla:~#
|
231
231
|
```
|
232
232
|
|
233
|
+
If you want to have the config automatically reloaded (e.g. when using a http source that changes)
|
234
|
+
```
|
235
|
+
root@bla:~# docker run -v /etc/oxidized:/root/.config/oxidized -p 8888:8888/tcp -e CONFIG_RELOAD_INTERVAL=3600 -t oxidized/oxidized:latest oxidized
|
236
|
+
```
|
237
|
+
|
233
238
|
## Cookbook
|
234
239
|
### Debugging
|
235
240
|
In case a model plugin doesn't work correctly (ios, procurve, etc.), you can enable live debugging of SSH/Telnet sessions. Just add a ```debug``` option, specifying a log file destination to the ```input``` section.
|
@@ -272,6 +277,21 @@ source:
|
|
272
277
|
enable: 4
|
273
278
|
```
|
274
279
|
|
280
|
+
### SSH Proxy Command
|
281
|
+
|
282
|
+
Oxidized can `ssh` through a proxy as well. To do so we just need to set `proxy` variable.
|
283
|
+
|
284
|
+
```
|
285
|
+
...
|
286
|
+
map:
|
287
|
+
name: 0
|
288
|
+
model: 1
|
289
|
+
vars_map:
|
290
|
+
enable: 2
|
291
|
+
proxy: 3
|
292
|
+
...
|
293
|
+
```
|
294
|
+
|
275
295
|
### Source: SQLite
|
276
296
|
|
277
297
|
One row per device, filtered by hostname.
|
@@ -296,6 +316,8 @@ source:
|
|
296
316
|
|
297
317
|
One object per device.
|
298
318
|
|
319
|
+
HTTP Supports basic auth, configure the user and pass you want to use under the http: section.
|
320
|
+
|
299
321
|
```
|
300
322
|
source:
|
301
323
|
default: http
|
@@ -326,6 +348,8 @@ output:
|
|
326
348
|
|
327
349
|
### Output: Git
|
328
350
|
|
351
|
+
This uses the rugged/libgit2 interface. So you should remember that normal Git hooks will not be executed.
|
352
|
+
|
329
353
|
```
|
330
354
|
output:
|
331
355
|
default: git
|
@@ -455,7 +479,7 @@ Following configuration keys need to be defined for all hooks:
|
|
455
479
|
### Events
|
456
480
|
* `node_success`: triggered when configuration is succesfully pulled from a node and right before storing the configuration.
|
457
481
|
* `node_fail`: triggered after `retries` amount of failed node pulls.
|
458
|
-
* `post_store`: triggered after node configuration is stored.
|
482
|
+
* `post_store`: triggered after node configuration is stored (this is executed only when the configuration has changed).
|
459
483
|
|
460
484
|
## Hook type: exec
|
461
485
|
The `exec` hook type allows users to run an arbitrary shell command or a binary when triggered.
|
data/bin/console
CHANGED
File without changes
|
@@ -23,7 +23,7 @@
|
|
23
23
|
# email_output:
|
24
24
|
# type: exec
|
25
25
|
# events: [post_store, node_fail]
|
26
|
-
# cmd: '
|
26
|
+
# cmd: '/home/oxidized/extra/oxidized-report-git-commits ~/gitdir/ | mail -s "Oxidized updates for ${OX_NODE_NAME}" update-recipient@example.com'
|
27
27
|
# async: true
|
28
28
|
# timeout: 120
|
29
29
|
#
|
data/lib/oxidized/cli.rb
CHANGED
data/lib/oxidized/input/ssh.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Oxidized
|
2
2
|
require 'net/ssh'
|
3
|
+
require 'net/ssh/proxy/command'
|
3
4
|
require 'timeout'
|
4
5
|
require 'oxidized/input/cli'
|
5
6
|
class SSH < Input
|
@@ -22,11 +23,15 @@ module Oxidized
|
|
22
23
|
secure = Oxidized.config.input.ssh.secure
|
23
24
|
@log = File.open(Oxidized::Config::Crash + "-#{@node.ip}-ssh", 'w') if Oxidized.config.input.debug?
|
24
25
|
port = vars(:ssh_port) || 22
|
25
|
-
|
26
|
+
if proxy_host = vars(:proxy)
|
27
|
+
proxy = Net::SSH::Proxy::Command.new("ssh #{proxy_host} nc %h %p")
|
28
|
+
end
|
29
|
+
@ssh = Net::SSH.start(@node.ip, @node.auth[:username], :port => port.to_i,
|
26
30
|
:password => @node.auth[:password], :timeout => Oxidized.config.timeout,
|
27
31
|
:paranoid => secure,
|
28
32
|
:auth_methods => %w(none publickey password keyboard-interactive),
|
29
|
-
:number_of_password_prompts => 0
|
33
|
+
:number_of_password_prompts => 0,
|
34
|
+
:proxy => proxy)
|
30
35
|
unless @exec
|
31
36
|
shell_open @ssh
|
32
37
|
begin
|
data/lib/oxidized/model/aosw.rb
CHANGED
@@ -56,7 +56,7 @@ class AOSW < Oxidized::Model
|
|
56
56
|
next if line.match /Output \d Config/i
|
57
57
|
next if line.match /(Tachometers|Temperatures|Voltages)/
|
58
58
|
next if line.match /((Card|CPU) Temperature|Chassis Fan|VMON1[0-9])/
|
59
|
-
next if line.match /[0-9]+ (RPM|mV|C)$/
|
59
|
+
next if line.match /[0-9]+ (RPM|RPMs|mV|C)$/
|
60
60
|
out << line.strip
|
61
61
|
end
|
62
62
|
out = comment out.join "\n"
|
@@ -33,9 +33,12 @@ class CiscoSMB < Oxidized::Model
|
|
33
33
|
cfg
|
34
34
|
end
|
35
35
|
|
36
|
-
cfg :telnet
|
36
|
+
cfg :telnet do
|
37
37
|
username /^User Name:/
|
38
38
|
password /^\r?Password:$/
|
39
|
+
end
|
40
|
+
|
41
|
+
cfg :telnet, :ssh do
|
39
42
|
post_login 'terminal datadump' # Disable pager
|
40
43
|
post_login 'terminal width 0'
|
41
44
|
pre_logout 'exit'
|
data/lib/oxidized/model/model.rb
CHANGED
@@ -79,7 +79,7 @@ module Oxidized
|
|
79
79
|
attr_accessor :input, :node
|
80
80
|
|
81
81
|
def cmd string, &block
|
82
|
-
out =
|
82
|
+
out = @input.cmd(string)
|
83
83
|
return false unless out
|
84
84
|
self.class.cmds[:all].each do |all_block|
|
85
85
|
out = instance_exec Oxidized::String.new(out), string, &all_block
|
data/lib/oxidized/source/http.rb
CHANGED
data/lib/oxidized/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oxidized
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saku Ytti
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-01-
|
13
|
+
date: 2016-01-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: asetus
|
@@ -170,9 +170,11 @@ files:
|
|
170
170
|
- TODO.md
|
171
171
|
- bin/console
|
172
172
|
- bin/oxidized
|
173
|
+
- extra/auto-reload-config.runit
|
173
174
|
- extra/nagios_check_failing_nodes.rb
|
174
175
|
- extra/oxidized-report-git-commits
|
175
176
|
- extra/oxidized.init
|
177
|
+
- extra/oxidized.runit
|
176
178
|
- extra/oxidized.service
|
177
179
|
- extra/oxidized.supervisord
|
178
180
|
- extra/oxidized.upstart
|