oxidized 0.30.1 → 0.31.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -2
- data/.github/workflows/stale.yml +4 -2
- data/.rubocop.yml +18 -2
- data/.rubocop_todo.yml +5 -12
- data/CHANGELOG.md +61 -1
- data/CONTRIBUTING.md +5 -0
- data/Dockerfile +82 -21
- data/README.md +5 -21
- data/Rakefile +3 -2
- data/docs/Configuration.md +36 -12
- data/docs/Creating-Models.md +45 -4
- data/docs/Hooks.md +34 -0
- data/docs/Issues.md +91 -0
- data/docs/Model-Notes/Cumulus.md +5 -0
- data/docs/Model-Notes/FSOS.md +5 -0
- data/docs/Model-Notes/FortiOS.md +21 -5
- data/docs/Model-Notes/HPEAruba.md +31 -0
- data/docs/Model-Notes/OS6.md +10 -0
- data/docs/Model-Notes/RouterOS.md +15 -0
- data/docs/Model-Notes/SikluMHTG.md +7 -0
- data/docs/Outputs.md +2 -0
- data/docs/Release.md +18 -15
- data/docs/Sources.md +21 -0
- data/docs/Supported-OS-Types.md +11 -5
- data/docs/Troubleshooting.md +35 -0
- data/examples/device-simulation/README.md +173 -0
- data/examples/device-simulation/cmdsets/aoscx +9 -0
- data/examples/device-simulation/cmdsets/arubainstant +5 -0
- data/examples/device-simulation/cmdsets/asa +7 -0
- data/examples/device-simulation/cmdsets/ios +7 -0
- data/examples/device-simulation/cmdsets/nxos +5 -0
- data/examples/device-simulation/cmdsets/routeros +5 -0
- data/examples/device-simulation/cmdsets/srosmd +11 -0
- data/examples/device-simulation/device2yaml.rb +225 -0
- data/examples/device-simulation/yaml/aoscx_R0X25A-6410_FL.10.10.1100.yaml +2281 -0
- data/examples/device-simulation/yaml/aoscx_R8N85A-C6000-48G-CL4_PL.10.08.1010.yaml +451 -0
- data/examples/device-simulation/yaml/arubainstant_IAP515_8.10.0.6_VWLC.yaml +213 -0
- data/examples/device-simulation/yaml/asa_5512_9.12-4-67_single-context.yaml +531 -0
- data/examples/device-simulation/yaml/asr920_16.8.1b.yaml +1122 -0
- data/examples/device-simulation/yaml/garderos_R7709_003_006_068.yaml +101 -0
- data/examples/device-simulation/yaml/iosxe_C9200L-24P-4G_17.09.04a.yaml +514 -0
- data/examples/device-simulation/yaml/iosxe_C9800-L-F-K9_17.06.05.yaml +417 -0
- data/examples/device-simulation/yaml/riverbed_915.yaml +123 -0
- data/examples/device-simulation/yaml/routeros_CHR_7.10.1.yaml +145 -0
- data/examples/device-simulation/yaml/routeros_CHR_7.16.yaml +79 -0
- data/examples/device-simulation/yaml/routeros_L009UiGS_7.15.2.yaml +353 -0
- data/examples/podman-compose/Makefile +60 -17
- data/examples/podman-compose/README.md +63 -27
- data/examples/podman-compose/docker-compose.yml +11 -2
- data/examples/podman-compose/gitserver/.gitignore +1 -0
- data/examples/podman-compose/gitserver/Dockerfile +14 -0
- data/examples/podman-compose/model-simulation/Dockerfile-model +1 -1
- data/examples/podman-compose/model-simulation/asternos.sh +2 -0
- data/examples/podman-compose/oxidized-config/.gitignore +2 -0
- data/examples/podman-compose/oxidized-config/config +1 -1
- data/examples/podman-compose/oxidized-config/config_csv-file +46 -0
- data/examples/podman-compose/oxidized-config/config_csv-gitserver +56 -0
- data/examples/podman-compose/oxidized-ssh/.gitignore +1 -0
- data/lib/oxidized/config.rb +7 -1
- data/lib/oxidized/hook/githubrepo.rb +37 -7
- data/lib/oxidized/hook/slackdiff.rb +29 -7
- data/lib/oxidized/input/http.rb +1 -0
- data/lib/oxidized/input/telnet.rb +1 -1
- data/lib/oxidized/manager.rb +17 -16
- data/lib/oxidized/model/aoscx.rb +16 -2
- data/lib/oxidized/model/aosw.rb +7 -1
- data/lib/oxidized/model/arubainstant.rb +90 -0
- data/lib/oxidized/model/audiocodes.rb +2 -2
- data/lib/oxidized/model/cnos.rb +13 -10
- data/lib/oxidized/model/cumulus.rb +3 -0
- data/lib/oxidized/model/dlink.rb +1 -0
- data/lib/oxidized/model/dlinknextgen.rb +3 -0
- data/lib/oxidized/model/edgecos.rb +2 -1
- data/lib/oxidized/model/eos.rb +2 -0
- data/lib/oxidized/model/f5os.rb +17 -0
- data/lib/oxidized/model/firewareos.rb +10 -1
- data/lib/oxidized/model/fortios.rb +24 -1
- data/lib/oxidized/model/garderos.rb +43 -0
- data/lib/oxidized/model/h3c.rb +1 -1
- data/lib/oxidized/model/ibos.rb +1 -0
- data/lib/oxidized/model/ios.rb +20 -12
- data/lib/oxidized/model/iosxr.rb +1 -1
- data/lib/oxidized/model/lenovonos.rb +2 -0
- data/lib/oxidized/model/linuxgeneric.rb +1 -1
- data/lib/oxidized/model/netgear.rb +1 -1
- data/lib/oxidized/model/nodegrid.rb +1 -1
- data/lib/oxidized/model/nsxdfw.rb +30 -0
- data/lib/oxidized/model/nxos.rb +2 -1
- data/lib/oxidized/model/os6.rb +48 -0
- data/lib/oxidized/model/rgos.rb +1 -1
- data/lib/oxidized/model/riverbed.rb +104 -0
- data/lib/oxidized/model/routeros.rb +2 -2
- data/lib/oxidized/model/saos.rb +18 -1
- data/lib/oxidized/model/siklumhtg.rb +22 -0
- data/lib/oxidized/model/uplinkolt.rb +46 -0
- data/lib/oxidized/model/vyatta.rb +2 -2
- data/lib/oxidized/model/xos.rb +7 -0
- data/lib/oxidized/node.rb +30 -18
- data/lib/oxidized/nodes.rb +13 -5
- data/lib/oxidized/output/file.rb +45 -42
- data/lib/oxidized/output/git.rb +185 -160
- data/lib/oxidized/output/gitcrypt.rb +188 -186
- data/lib/oxidized/output/http.rb +53 -51
- data/lib/oxidized/output/output.rb +6 -4
- data/lib/oxidized/source/csv.rb +44 -49
- data/lib/oxidized/source/http.rb +63 -81
- data/lib/oxidized/source/jsonfile.rb +63 -0
- data/lib/oxidized/source/source.rb +43 -18
- data/lib/oxidized/source/sql.rb +66 -59
- data/lib/oxidized/version.rb +2 -2
- data/oxidized.gemspec +22 -16
- metadata +111 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59670040bed3f1d863d073d2f87dfaa07f3918eef49c3a0f2bbf44b6b111c3cc
|
4
|
+
data.tar.gz: 7e1c5400732aaf05567e20c635bee4e9bd9d0d4254b1aec78f2cb69fb48c98a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60fad3a803759b63ee5519d0abb7f60eedd397eef68fa0728009b41553698b0d6b45dbd1c02de235ca9b929849b63b6caff3e751d5c24cdcf7039f1096b8727c
|
7
|
+
data.tar.gz: ea896202d8ba22fae8f64ba596b48fd31bdca016dee62652a1ca3feb27be0c2d07328472c4f8fa96f3b001ffacdc37078555f0c6439dbe1aca9ce85cc32afe3d
|
data/.github/workflows/ruby.yml
CHANGED
@@ -19,7 +19,7 @@ jobs:
|
|
19
19
|
runs-on: ubuntu-latest
|
20
20
|
strategy:
|
21
21
|
matrix:
|
22
|
-
ruby-version: ['3.
|
22
|
+
ruby-version: ['3.1', '3.2', '3.3']
|
23
23
|
|
24
24
|
steps:
|
25
25
|
- uses: actions/checkout@v4
|
@@ -34,7 +34,7 @@ jobs:
|
|
34
34
|
uses: reviewdog/action-rubocop@v2
|
35
35
|
with:
|
36
36
|
rubocop_version: gemfile
|
37
|
-
rubocop_extensions: rubocop-minitest:gemfile rubocop-rake:gemfile
|
37
|
+
rubocop_extensions: rubocop-minitest:gemfile rubocop-rake:gemfile rubocop-sequel:gemfile
|
38
38
|
reporter: github-pr-review
|
39
39
|
- name: Run tests
|
40
40
|
run: bundle exec rake
|
data/.github/workflows/stale.yml
CHANGED
@@ -14,6 +14,8 @@ jobs:
|
|
14
14
|
steps:
|
15
15
|
- uses: actions/stale@v9
|
16
16
|
with:
|
17
|
+
stale-issue-message: 'This issue is stale because it has been open 90 days with no activity.'
|
18
|
+
stale-pr-message: 'This PR is stale because it has been open 90 days with no activity.'
|
17
19
|
operations-per-run: 500
|
18
|
-
days-before-
|
19
|
-
days-before-close:
|
20
|
+
days-before-stale: 90
|
21
|
+
days-before-close: -1
|
data/.rubocop.yml
CHANGED
@@ -3,7 +3,7 @@ inherit_from: .rubocop_todo.yml
|
|
3
3
|
# Do not attempt to police vendored code
|
4
4
|
AllCops:
|
5
5
|
NewCops: enable
|
6
|
-
TargetRubyVersion: 3.
|
6
|
+
TargetRubyVersion: 3.1
|
7
7
|
Exclude:
|
8
8
|
- 'vendor/**/*'
|
9
9
|
|
@@ -19,8 +19,12 @@ Style/FrozenStringLiteralComment:
|
|
19
19
|
Layout/LineLength:
|
20
20
|
Enabled: false
|
21
21
|
|
22
|
+
# We do not enforce the cop in the models as it would not work with the
|
23
|
+
# DSL style of the models
|
22
24
|
Lint/AmbiguousRegexpLiteral:
|
23
|
-
Enabled:
|
25
|
+
Enabled: true
|
26
|
+
Exclude:
|
27
|
+
- lib/oxidized/model/*.rb
|
24
28
|
|
25
29
|
Lint/RaiseException:
|
26
30
|
Enabled: true
|
@@ -52,12 +56,19 @@ Style/FormatStringToken:
|
|
52
56
|
Style/HashEachMethods:
|
53
57
|
Enabled: true
|
54
58
|
|
59
|
+
Style/HashSyntax:
|
60
|
+
EnforcedShorthandSyntax: either
|
61
|
+
|
55
62
|
Style/HashTransformKeys:
|
56
63
|
Enabled: true
|
57
64
|
|
58
65
|
Style/HashTransformValues:
|
59
66
|
Enabled: true
|
60
67
|
|
68
|
+
Style/RegexpLiteral:
|
69
|
+
EnforcedStyle: slashes
|
70
|
+
AllowInnerSlashes: true
|
71
|
+
|
61
72
|
Style/RescueModifier:
|
62
73
|
Enabled: false
|
63
74
|
|
@@ -82,8 +93,12 @@ Metrics/ClassLength:
|
|
82
93
|
## Metrics/CyclomaticComplexity:
|
83
94
|
## Max: 7
|
84
95
|
|
96
|
+
# The BlockLength metric does not apply to unit tests. They are in nature
|
97
|
+
# long and not very pretty
|
85
98
|
Metrics/BlockLength:
|
86
99
|
Max: 150
|
100
|
+
Exclude:
|
101
|
+
- spec/**/*_spec.rb
|
87
102
|
|
88
103
|
Metrics/ParameterLists:
|
89
104
|
Max: 6
|
@@ -94,3 +109,4 @@ Lint/EmptyBlock:
|
|
94
109
|
require:
|
95
110
|
- rubocop-rake
|
96
111
|
- rubocop-minitest
|
112
|
+
- rubocop-sequel
|
data/.rubocop_todo.yml
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2024-
|
3
|
+
# on 2024-10-15 06:30:40 UTC using RuboCop version 1.66.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 29
|
10
10
|
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
|
11
11
|
Metrics/AbcSize:
|
12
12
|
Enabled: false
|
13
13
|
|
14
|
-
# Offense count:
|
14
|
+
# Offense count: 18
|
15
15
|
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
16
16
|
Metrics/CyclomaticComplexity:
|
17
17
|
Max: 12
|
18
18
|
|
19
|
-
# Offense count:
|
19
|
+
# Offense count: 15
|
20
20
|
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
21
21
|
Metrics/PerceivedComplexity:
|
22
22
|
Max: 12
|
@@ -72,19 +72,12 @@ Style/OpenStructUse:
|
|
72
72
|
- 'lib/oxidized/node.rb'
|
73
73
|
- 'spec/hook/githubrepo_spec.rb'
|
74
74
|
|
75
|
-
# Offense count: 47
|
76
|
-
# This cop supports safe autocorrection (--autocorrect).
|
77
|
-
# Configuration parameters: EnforcedStyle, AllowInnerSlashes.
|
78
|
-
# SupportedStyles: slashes, percent_r, mixed
|
79
|
-
Style/RegexpLiteral:
|
80
|
-
Enabled: false
|
81
|
-
|
82
75
|
# Offense count: 31
|
83
76
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
84
77
|
Style/SlicingWithRange:
|
85
78
|
Enabled: false
|
86
79
|
|
87
|
-
# Offense count:
|
80
|
+
# Offense count: 85
|
88
81
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
89
82
|
# Configuration parameters: Mode.
|
90
83
|
Style/StringConcatenation:
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,67 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
6
6
|
|
7
|
+
## [0.31.0 – 2024-11-29]
|
8
|
+
|
9
|
+
### Added
|
10
|
+
- model for Riverbed Steelhead (@Swaeltjie)
|
11
|
+
- model for uplink EP4440-DP OLT (@AAm-kun)
|
12
|
+
- model for Siklu Multihaul TG radios (@bdg-robert)
|
13
|
+
- model for VMWare NSX DFW (@elmobp)
|
14
|
+
- model for F5OS (@teunvink)
|
15
|
+
- cumulus: Add possibility to use NVUE (@lagertonne)
|
16
|
+
- model for garderos (@robertcheramy)
|
17
|
+
- unit tests framework for models with ssh input (@robertcheramy)
|
18
|
+
- os6: Added support to Dell EMC Networking OS6 (@anubisg1)
|
19
|
+
- model for HPE Aruba Networking Instant Mode (Aruba Instant). Fixes #3057 (@robertcheramy)
|
20
|
+
- Add JSONFILE source (@sargon)
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
- h3c: change prompt to expect either angle (user-view) or square (system-view) brackets (@nl987)
|
24
|
+
- xos: Hide radius and user secrets for XOS (@iriseden)
|
25
|
+
- eos: Hide radius and snmp secrets for Arista EOS (@iriseden)
|
26
|
+
- fortios: Hide date in acme certifcate comments (@systeembeheerder)
|
27
|
+
- dlink: added support for 'enable admin' before getting configuration, if enable=true (@as8net)
|
28
|
+
- dlinknextgen: strip uptime and ntp update time from config
|
29
|
+
- Updated slackdiff.rb to use slack_ruby_client instead of slack-api (@Punicaa)
|
30
|
+
- oxidized: options (such as credentials, etc.) now use the same resolution logic as variables and can also be defined per model in a group (@EinGlasVollKakao)
|
31
|
+
- saos: add inventory and software status collection (@grbeneke)
|
32
|
+
- container-image: update to phusion/baseimage:noble-1.0.0 and include security upgrades at build time (@robertcheramy)
|
33
|
+
- container-image: use ubuntu-packages instead of gems in order to reduce container image size (@robertcheramy)
|
34
|
+
- edgecos.rb: hide temperature and fan speed (@dhooper6430)
|
35
|
+
- cnos: show information before config, remove secrets only when told to do so (@robje)
|
36
|
+
- Updated slackdiff.rb to use new files.getUploadURLExternal slack file upload API instead of deprecated files.upload (@varesa)
|
37
|
+
- Updated source/output files to reference a Source/Output module to avoid namespace duplication (@laf, @robertcheramy)
|
38
|
+
- ios: Hide WLAN PSK, AP profile dot1x password, AP profile mgmtuser password/secret and radius COA server-key (@devon-mar)
|
39
|
+
- ios: remove values from custom SNMP OID's, set by an EEM script (@syn-bit)
|
40
|
+
- Update net-ssh to 7.3 to enable support for aes(128|256)gcm. Fixes #3168 (@jacobw)
|
41
|
+
- removed time command from uplink EP4440-DP OLT model
|
42
|
+
- fortios: variable `fullconfig` to get the configuration with default values. Fixes: #3159 (@robertcheramy)
|
43
|
+
- container-image: install x25519 gem package to support more ssh kex. Fixes #3070 (@benasse)
|
44
|
+
- lenovonos: Salt administrator-password line when remove_unstable_lines is set to True (@kani999)
|
45
|
+
- lenovonos: Removes lines that started with Fan because RPM always changes. (@kani999)
|
46
|
+
|
47
|
+
### Fixed
|
48
|
+
- fixed error for ibos when remove_secret is set (@dminuoso)
|
49
|
+
- fixed prompt for Watchguard FirewareOS not matching the regex when the node is managed and master (@benasse)
|
50
|
+
- fixed prompt for vyos/vyatta to allow logins with non-priviliged accounts. Fixes #3111 (@h-lopez)
|
51
|
+
- fixed power consumption included in ArubaOS-CX diffs starting with FL.10.13.xxx. Fixes #3142 (@terratalpi)
|
52
|
+
- fixed oxidized-web getting "version not found" when fetching a version from git and no group is defined. Fixes #2222 (@robertcheramy)
|
53
|
+
- fixed telnet to disconnect gracefully even if it throws IOError while disconnect. Fixes #3212 (@ytti)
|
54
|
+
- docs: run git garbage collection to address performance issues. Fixes #3121 (@robertcheramy)
|
55
|
+
- saos: fixed handling of 'unsaved configuration' indicator in prompt (@grbeneke)
|
56
|
+
- rgos: also strip "System uptime" for installed modules (@spike77453)
|
57
|
+
- fixed digest authentication when using http input (@spike77453)
|
58
|
+
- fixed aosw prompt; now working with ArubaOS 8 (@mabezi, @robertcheramy)
|
59
|
+
- routeros: fix system info for CHR. Fixes #3180 (@systeembeheerder)
|
60
|
+
- removed hardcoded '~/.config/oxidized/config'. Fixes #3229 (@robertcheramy)
|
61
|
+
- linuxgeneric: updated prompt to support '$' at the end (@robertcheramy)
|
62
|
+
- hook githubrepo: add a specific warning when rugged not installed with ssh support. Fixes #3211 (@robertcheramy)
|
63
|
+
- hook githubrepo: works with custom branch names (@robertcheramy)
|
64
|
+
- ios: removes secrets when config has multiple snmp-server host lines. Fixes #3239 (@robertcheramy)
|
65
|
+
- ios: fixed device specs on ASR900 Series. Fixes #3297 (@robertcheramy, @roshnaraman)
|
66
|
+
- netgear: prompt for gs752tpp. Fixes #3287 (@robertcheramy)
|
67
|
+
- aoscx: fixed regex for 6400 switches to hide temperature and power (@steveneppler)
|
7
68
|
|
8
69
|
## [0.30.1 – 2024-04-12]
|
9
70
|
|
@@ -13,7 +74,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
13
74
|
### Fixed
|
14
75
|
- The version string was not set correctly (@robertcheramy)
|
15
76
|
|
16
|
-
|
17
77
|
## [0.30.0 – 2024-04-11]
|
18
78
|
|
19
79
|
### Added
|
data/CONTRIBUTING.md
CHANGED
@@ -6,6 +6,9 @@ A great place for users to get involved is the [GitHub issues](https://github.co
|
|
6
6
|
Through the issues, you can interact with maintainers and other users. You can open an issue
|
7
7
|
if you need help, but you can also help other users by reviewing their issues and commenting on them.
|
8
8
|
|
9
|
+
Before writing an issue, please read our documentation on
|
10
|
+
[how to write good issues](/docs/Issues.md).
|
11
|
+
|
9
12
|
> ## Legal Notice
|
10
13
|
> When submitting content to this project, you must agree that you have authored 100%
|
11
14
|
> of the content, that you have the necessary rights to the content and that the
|
@@ -119,6 +122,8 @@ bundle config set --local path 'vendor/bundle'
|
|
119
122
|
bundle install
|
120
123
|
```
|
121
124
|
|
125
|
+
Note: if you need to install rugged with ssh support, you can tell bundler so with `bundle config build.rugged --with-ssh`. Reinstall rugged with `bundle pristine rugged`
|
126
|
+
|
122
127
|
### Run your code
|
123
128
|
```bash
|
124
129
|
bundle exec bin/oxidized
|
data/Dockerfile
CHANGED
@@ -1,39 +1,45 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
###################
|
2
|
+
# Stage 1: Prebuild to save space in the final image.
|
3
3
|
|
4
|
-
|
5
|
-
RUN apt-get -yq update \
|
6
|
-
&& apt-get -yq --no-install-recommends install ruby3.0 ruby3.0-dev libssl3 bzip2 libssl-dev pkg-config make cmake libssh2-1 libssh2-1-dev git git-email libmailtools-perl g++ libffi-dev ruby-bundler libicu70 libicu-dev libsqlite3-0 libsqlite3-dev libmysqlclient21 libmysqlclient-dev libpq5 libpq-dev zlib1g-dev msmtp \
|
7
|
-
&& apt-get clean \
|
8
|
-
&& rm -rf /var/lib/apt/lists/*
|
4
|
+
FROM docker.io/phusion/baseimage:noble-1.0.0 AS prebuilder
|
9
5
|
|
10
|
-
#
|
11
|
-
RUN
|
6
|
+
# install necessary packages for building gems
|
7
|
+
RUN apt-get update && apt-get install -y \
|
8
|
+
build-essential \
|
9
|
+
git \
|
10
|
+
ruby-dev \
|
11
|
+
&& rm -rf /var/lib/apt/lists/*
|
12
12
|
|
13
|
-
#
|
14
|
-
RUN
|
13
|
+
# create bundle directory
|
14
|
+
RUN mkdir -p /usr/local/bundle
|
15
|
+
ENV GEM_HOME=/usr/local/bundle
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
###################
|
18
|
+
# Install the x25519 gem
|
19
|
+
RUN gem install x25519 --no-document
|
18
20
|
|
19
|
-
|
21
|
+
###################
|
22
|
+
# build oxidized
|
20
23
|
COPY . /tmp/oxidized/
|
21
24
|
WORKDIR /tmp/oxidized
|
22
25
|
|
23
26
|
# docker automated build gets shallow copy, but non-shallow copy cannot be unshallowed
|
24
27
|
RUN git fetch --unshallow || true
|
25
28
|
|
29
|
+
# Remove any older gems of oxidized if they exist
|
30
|
+
RUN rm pkg/* || true
|
31
|
+
|
26
32
|
# Ensure rugged is built with ssh support
|
27
|
-
RUN
|
33
|
+
RUN rake build
|
28
34
|
|
29
|
-
# web interface
|
30
|
-
RUN gem install oxidized-web --no-document
|
31
35
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
RUN apt-get -yq --purge autoremove ruby-dev pkg-config make cmake ruby-bundler libssl-dev libssh2-1-dev libicu-dev libsqlite3-dev libmysqlclient-dev libpq-dev zlib1g-dev
|
36
|
+
###################
|
37
|
+
# Stage2: build an oxidized container from phusion/baseimage-docker and install x25519 from stage1
|
38
|
+
FROM docker.io/phusion/baseimage:noble-1.0.0
|
36
39
|
|
40
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
41
|
+
|
42
|
+
##### Place "static" commands at the beginning to optimize image size and build speed
|
37
43
|
# add non-privileged user
|
38
44
|
ARG UID=30000
|
39
45
|
ARG GID=$UID
|
@@ -55,4 +61,59 @@ COPY extra/oxidized.runit /etc/service/oxidized/run
|
|
55
61
|
COPY extra/auto-reload-config.runit /etc/service/auto-reload-config/run
|
56
62
|
COPY extra/update-ca-certificates.runit /etc/service/update-ca-certificates/run
|
57
63
|
|
64
|
+
# set up dependencies for the build process
|
65
|
+
RUN apt-get -yq update \
|
66
|
+
&& apt-get -yq upgrade \
|
67
|
+
&& apt-get -yq --no-install-recommends install ruby \
|
68
|
+
# Build process of oxidized from git (beloww)
|
69
|
+
git \
|
70
|
+
# Allow git send-email from docker image
|
71
|
+
git-email libmailtools-perl \
|
72
|
+
# Allow sending emails in the docker container
|
73
|
+
msmtp \
|
74
|
+
# Debuging tools inside the container
|
75
|
+
inetutils-telnet \
|
76
|
+
# Use ubuntu gems where possible
|
77
|
+
# Gems needed by oxidized
|
78
|
+
ruby-rugged ruby-slop ruby-psych \
|
79
|
+
ruby-net-telnet ruby-net-ssh ruby-net-ftp ruby-net-scp ruby-ed25519 \
|
80
|
+
# Gem dependencies for inputs
|
81
|
+
ruby-net-http-persistent ruby-mechanize \
|
82
|
+
# Gem dependencies for sources
|
83
|
+
ruby-sqlite3 ruby-mysql2 ruby-pg ruby-sequel ruby-gpgme\
|
84
|
+
# Gem dependencies for hooks
|
85
|
+
ruby-aws-sdk ruby-xmpp4r \
|
86
|
+
# Gems needed by oxidized-web
|
87
|
+
ruby-charlock-holmes ruby-haml ruby-htmlentities ruby-json \
|
88
|
+
puma ruby-sinatra ruby-sinatra-contrib \
|
89
|
+
&& apt-get clean \
|
90
|
+
&& rm -rf /var/lib/apt/lists/*
|
91
|
+
|
92
|
+
# copy the compiled gem from the builder stage
|
93
|
+
COPY --from=prebuilder /usr/local/bundle /usr/local/bundle
|
94
|
+
|
95
|
+
# Set environment variables for bundler
|
96
|
+
ENV GEM_HOME="/usr/local/bundle"
|
97
|
+
ENV PATH="$GEM_HOME/bin:$PATH"
|
98
|
+
|
99
|
+
# gems not available in ubuntu noble
|
100
|
+
RUN gem install --no-document \
|
101
|
+
# dependencies for hooks
|
102
|
+
slack-ruby-client cisco_spark \
|
103
|
+
# dependencies for specific inputs
|
104
|
+
net-tftp
|
105
|
+
|
106
|
+
# install oxidized from prebuilder
|
107
|
+
# The Dockerfile ist version-independent, so use oxidized-*.gem to cach the gem
|
108
|
+
RUN mkdir -p /tmp/oxidized
|
109
|
+
COPY --from=prebuilder /tmp/oxidized/pkg/oxidized-*.gem /tmp/oxidized/
|
110
|
+
RUN gem install /tmp/oxidized/oxidized-*.gem
|
111
|
+
|
112
|
+
# install oxidized-web
|
113
|
+
RUN gem install oxidized-web --no-document
|
114
|
+
|
115
|
+
# clean up
|
116
|
+
WORKDIR /
|
117
|
+
RUN rm -rf /tmp/oxidized
|
118
|
+
|
58
119
|
EXPOSE 8888/tcp
|
data/README.md
CHANGED
@@ -101,23 +101,7 @@ gem install oxidized-script oxidized-web # If you don't install oxidized-web, en
|
|
101
101
|
|
102
102
|
### CentOS, Oracle Linux, Red Hat Linux
|
103
103
|
|
104
|
-
On CentOS 6 and 7 / RHEL 6 and 7, begin by installing Ruby
|
105
|
-
|
106
|
-
Install Ruby 2.3 from [SCL](https://www.softwarecollections.org/en/scls/rhscl/rh-ruby23/):
|
107
|
-
|
108
|
-
```shell
|
109
|
-
yum install centos-release-scl
|
110
|
-
yum install rh-ruby30 rh-ruby30-ruby-devel
|
111
|
-
scl enable rh-ruby30 bash
|
112
|
-
```
|
113
|
-
|
114
|
-
The following additional packages will be required to build the dependencies:
|
115
|
-
|
116
|
-
```shell
|
117
|
-
yum install make cmake which sqlite-devel openssl-devel libssh2-devel ruby gcc ruby-devel libicu-devel gcc-c++
|
118
|
-
```
|
119
|
-
|
120
|
-
Alternatively, install Ruby 2.6 via RVM by following the instructions:
|
104
|
+
On CentOS 6 and 7 / RHEL 6 and 7, begin by installing Ruby 3.1 via RVM by following the instructions:
|
121
105
|
|
122
106
|
Make sure you dont have any leftover ruby:
|
123
107
|
```yum erase ruby```
|
@@ -129,8 +113,8 @@ sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A17031138
|
|
129
113
|
curl -sSL https://get.rvm.io | bash -s stable
|
130
114
|
source /etc/profile.d/rvm.sh
|
131
115
|
rvm requirements run
|
132
|
-
rvm install 3.
|
133
|
-
rvm use 3.
|
116
|
+
rvm install 3.1
|
117
|
+
rvm use 3.1
|
134
118
|
```
|
135
119
|
|
136
120
|
Install oxidized requirements:
|
@@ -200,7 +184,7 @@ Run the container for the first time to initialize the config:
|
|
200
184
|
_Note: this step in only required for creating the Oxidized configuration file and can be skipped if you already have one._
|
201
185
|
|
202
186
|
```shell
|
203
|
-
docker run --rm -v /etc/oxidized:/home/oxidized/.config/oxidized -p 8888:8888/tcp -t oxidized/oxidized:latest oxidized
|
187
|
+
docker run --rm -v /etc/oxidized:/home/oxidized/.config/oxidized -p 8888:8888/tcp --user oxidized -t oxidized/oxidized:latest oxidized
|
204
188
|
```
|
205
189
|
|
206
190
|
If the RESTful API and Web Interface are enabled, on the docker host running the container
|
@@ -295,7 +279,7 @@ It is recommended practice to run Oxidized using its own username. This usernam
|
|
295
279
|
useradd -s /bin/bash -m oxidized
|
296
280
|
```
|
297
281
|
|
298
|
-
> It is recommended __not__ to run Oxidized as root.
|
282
|
+
> It is recommended __not__ to run Oxidized as root. After creating a dedicated user, switch to the oxidized user using su oxidized to ensure that Oxidized is run under the correct user context.
|
299
283
|
|
300
284
|
To initialize a default configuration in your home directory `~/.config/oxidized/config`, simply run `oxidized` once. If you don't further configure anything from the output and source sections, it'll extend the examples on a subsequent `oxidized` execution. This is useful to see what options for a specific source or output backend are available.
|
301
285
|
|
data/Rakefile
CHANGED
@@ -27,7 +27,8 @@ task :test do
|
|
27
27
|
Rake::TestTask.new do |t|
|
28
28
|
t.libs << 'spec'
|
29
29
|
t.test_files = FileList['spec/**/*_spec.rb']
|
30
|
-
t
|
30
|
+
# Don't display ambiguity warning between regexp and division in models
|
31
|
+
t.warning = false
|
31
32
|
t.verbose = true
|
32
33
|
end
|
33
34
|
end
|
@@ -75,7 +76,7 @@ task :chmod do
|
|
75
76
|
extra/update-ca-certificates.runit
|
76
77
|
]
|
77
78
|
dirs = []
|
78
|
-
%x(git ls-files -z).split("\x0").reject { |f| f.match(
|
79
|
+
%x(git ls-files -z).split("\x0").reject { |f| f.match(/^(test|spec|features)\//) }.each do |file|
|
79
80
|
dirs.push(File.dirname(file))
|
80
81
|
xbit.include?(file) ? File.chmod(0o0755, file) : File.chmod(0o0644, file)
|
81
82
|
end
|
data/docs/Configuration.md
CHANGED
@@ -9,7 +9,7 @@ The following example will log an active ssh/telnet session `/home/oxidized/.con
|
|
9
9
|
```yaml
|
10
10
|
log: /home/oxidized/.config/oxidized/log
|
11
11
|
|
12
|
-
...
|
12
|
+
# ...
|
13
13
|
|
14
14
|
input:
|
15
15
|
default: ssh, telnet
|
@@ -45,7 +45,7 @@ As a partial example from ios.rb:
|
|
45
45
|
```ruby
|
46
46
|
cmd :secret do |cfg|
|
47
47
|
cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
|
48
|
-
|
48
|
+
# ...
|
49
49
|
cfg
|
50
50
|
end
|
51
51
|
```
|
@@ -98,14 +98,14 @@ vars:
|
|
98
98
|
Per-Node:
|
99
99
|
|
100
100
|
```yaml
|
101
|
-
...
|
101
|
+
# ...
|
102
102
|
map:
|
103
103
|
name: 0
|
104
104
|
model: 1
|
105
105
|
vars_map:
|
106
106
|
enable: 2
|
107
107
|
ssh_keys: 3
|
108
|
-
...
|
108
|
+
# ...
|
109
109
|
```
|
110
110
|
|
111
111
|
If you are using a non-standard path, especially when copying the private key via a secured channel, make sure that the permissions are set correctly:
|
@@ -131,7 +131,7 @@ This can be provided on a per-node basis by mapping the proper fields from your
|
|
131
131
|
An example for a `csv` input source that maps the 4th field as the `ssh_proxy` value and the 5th field as `ssh_proxy_port`.
|
132
132
|
|
133
133
|
```yaml
|
134
|
-
...
|
134
|
+
# ...
|
135
135
|
map:
|
136
136
|
name: 0
|
137
137
|
model: 1
|
@@ -139,7 +139,7 @@ vars_map:
|
|
139
139
|
enable: 2
|
140
140
|
ssh_proxy: 3
|
141
141
|
ssh_proxy_port: 4
|
142
|
-
...
|
142
|
+
# ...
|
143
143
|
```
|
144
144
|
|
145
145
|
## SSH enabling legacy algorithms
|
@@ -149,7 +149,7 @@ When connecting to older firmware over SSH, it is sometimes necessary to enable
|
|
149
149
|
These settings can be provided on a per-node basis by mapping the ssh_kex, ssh_host_key, ssh_hmac and the ssh_encryption fields from you source.
|
150
150
|
|
151
151
|
```yaml
|
152
|
-
...
|
152
|
+
# ...
|
153
153
|
map:
|
154
154
|
name: 0
|
155
155
|
model: 1
|
@@ -159,7 +159,7 @@ vars_map:
|
|
159
159
|
ssh_host_key: 4
|
160
160
|
ssh_hmac: 5
|
161
161
|
ssh_encryption: 6
|
162
|
-
...
|
162
|
+
# ...
|
163
163
|
```
|
164
164
|
|
165
165
|
## FTP Passive Mode
|
@@ -242,13 +242,15 @@ groups:
|
|
242
242
|
password: ubnt
|
243
243
|
```
|
244
244
|
|
245
|
-
Model specific variables within groups
|
245
|
+
Model specific variables/credentials within groups
|
246
246
|
|
247
247
|
```yaml
|
248
248
|
groups:
|
249
249
|
foo:
|
250
250
|
models:
|
251
251
|
arista:
|
252
|
+
username: admin
|
253
|
+
password: password
|
252
254
|
vars:
|
253
255
|
ssh_keys: "~/.ssh/id_rsa_foo_arista"
|
254
256
|
vyatta:
|
@@ -260,6 +262,8 @@ groups:
|
|
260
262
|
vars:
|
261
263
|
ssh_keys: "~/.ssh/id_rsa_bar_routeros"
|
262
264
|
vyatta:
|
265
|
+
username: admin
|
266
|
+
password: pass
|
263
267
|
vars:
|
264
268
|
ssh_keys: "~/.ssh/id_rsa_bar_vyatta"
|
265
269
|
```
|
@@ -273,16 +277,16 @@ group_map:
|
|
273
277
|
alias3: groupB
|
274
278
|
alias4: groupB
|
275
279
|
aliasN: groupZ
|
276
|
-
...
|
280
|
+
# ...
|
277
281
|
```
|
278
282
|
|
279
283
|
add group mapping to a source
|
280
284
|
|
281
285
|
```yaml
|
282
286
|
source:
|
283
|
-
...
|
287
|
+
# ...
|
284
288
|
<source>:
|
285
|
-
...
|
289
|
+
# ...
|
286
290
|
map:
|
287
291
|
model: 0
|
288
292
|
name: 1
|
@@ -311,15 +315,35 @@ models:
|
|
311
315
|
password: pass
|
312
316
|
```
|
313
317
|
|
318
|
+
### Options (credentials, vars, etc.) precedence:
|
319
|
+
From least to most important:
|
320
|
+
- global options
|
321
|
+
- model specific options
|
322
|
+
- group specific options
|
323
|
+
- model specific options in groups
|
324
|
+
- options defined on single nodes
|
325
|
+
|
326
|
+
More important options overwrite less important ones if they are set.
|
327
|
+
|
314
328
|
## RESTful API and Web Interface
|
315
329
|
|
316
330
|
The RESTful API and Web Interface is enabled by configuring the `rest:` parameter in the config file. This parameter can optionally contain a relative URI.
|
317
331
|
|
332
|
+
```yaml
|
333
|
+
# Listen on http://[::1]:8888/
|
334
|
+
rest: "[::1]:8888"
|
335
|
+
```
|
336
|
+
|
318
337
|
```yaml
|
319
338
|
# Listen on http://127.0.0.1:8888/
|
320
339
|
rest: 127.0.0.1:8888
|
321
340
|
```
|
322
341
|
|
342
|
+
```yaml
|
343
|
+
# Listen on http://[2001:db8:0:face:b001:0:dead:beaf]:8888/oxidized/
|
344
|
+
rest: "[2001:db8:0:face:b001:0:dead:beaf]:8888"
|
345
|
+
```
|
346
|
+
|
323
347
|
```yaml
|
324
348
|
# Listen on http://10.0.0.1:8000/oxidized/
|
325
349
|
rest: 10.0.0.1:8000/oxidized
|