oxidized 0.30.1 → 0.31.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/.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
data/docs/Creating-Models.md
CHANGED
|
@@ -6,6 +6,14 @@ A user may wish to extend an existing model to collect the output of additional
|
|
|
6
6
|
|
|
7
7
|
This methodology allows local site changes to be preserved during Oxidized version updates / gem updates. It also enables convenient local development of new models.
|
|
8
8
|
|
|
9
|
+
## Index
|
|
10
|
+
- [Creating a new model](#creating-a-new-model)
|
|
11
|
+
- [Extending an existing model with a new command](#extending-an-existing-model-with-a-new-command)
|
|
12
|
+
- [Create unit tests for the model](#create-unit-tests-for-the-model)
|
|
13
|
+
- [Advanced features](#advanced-features)
|
|
14
|
+
- [Monkey-patching blocks in existing models](#monkey-patching-blocks-in-existing-models)
|
|
15
|
+
- [Help](#help)
|
|
16
|
+
|
|
9
17
|
## Creating a new model
|
|
10
18
|
|
|
11
19
|
An Oxidized model, at minimum, requires just three elements:
|
|
@@ -21,13 +29,19 @@ class RootWare < Oxidized::Model
|
|
|
21
29
|
using Refinements
|
|
22
30
|
|
|
23
31
|
cmd 'show complete-config'
|
|
32
|
+
|
|
33
|
+
cfg :ssh do
|
|
34
|
+
pre_logout 'exit'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
24
37
|
```
|
|
25
38
|
|
|
26
39
|
This model, as-is will:
|
|
27
40
|
|
|
28
|
-
* Log into the device and expect the default prompt.
|
|
41
|
+
* Log into the device with ssh and expect the default prompt.
|
|
29
42
|
* Upon matching it, execute the command `show complete-config`
|
|
30
43
|
* Collect the output.
|
|
44
|
+
* Logout with the command `exit`
|
|
31
45
|
|
|
32
46
|
It is often useful to, at minimum, define the following additional elements for any newly introduced module:
|
|
33
47
|
|
|
@@ -72,6 +86,33 @@ Intuitively, it is also possible to:
|
|
|
72
86
|
* Create a completely new model, with a new name, for a new operating system type.
|
|
73
87
|
* Testing/validation of an updated model from the [Oxidized GitHub repo models](https://github.com/ytti/oxidized/tree/master/lib/oxidized/model) by placing an updated model in the proper location without disrupting the gem-supplied model files.
|
|
74
88
|
|
|
89
|
+
## Create unit tests for the model
|
|
90
|
+
> :warning: model unit tests are still a work in progress and need some polishing.
|
|
91
|
+
|
|
92
|
+
If you want the model to be integrated into oxidized, you can
|
|
93
|
+
[submit a pull request on github](https://github.com/ytti/oxidized/pulls).
|
|
94
|
+
This is a greatly appreciated submission, as there are probably other users
|
|
95
|
+
using the same network device as you are.
|
|
96
|
+
|
|
97
|
+
A good (and optional) practice for submissions is to provide a
|
|
98
|
+
[unit test for your model](/spec/model). This reduces the risk that further
|
|
99
|
+
developments could break it, and facilitates debugging issues without having
|
|
100
|
+
access to a physical network device for the model.
|
|
101
|
+
|
|
102
|
+
In order to simulate the device in the unit test, you need a
|
|
103
|
+
[YAML simulation file](/examples/device-simulation/), have a look at the
|
|
104
|
+
link for an explanation on how to create one.
|
|
105
|
+
|
|
106
|
+
Creating the unit test itself is explained in
|
|
107
|
+
[README.md in the model unit test directory](/spec/model/README.md).
|
|
108
|
+
|
|
109
|
+
Remember - producing a YAML simulation file and/or writing a unit test is
|
|
110
|
+
optional.
|
|
111
|
+
The most value comes from the YAML simulation file. The unit
|
|
112
|
+
test can be written by someone else, but you need access to the device for the
|
|
113
|
+
YAML simulation file. If you encounter problems, open an issue or ask for help
|
|
114
|
+
in your pull request.
|
|
115
|
+
|
|
75
116
|
## Advanced features
|
|
76
117
|
|
|
77
118
|
The loosely-coupled architecture of Oxidized allows for easy extensibility in more advanced use cases as well.
|
|
@@ -124,19 +165,19 @@ Examples:
|
|
|
124
165
|
|
|
125
166
|
```ruby
|
|
126
167
|
cmd :secret, clear: true do
|
|
127
|
-
... "(new code for secret removal which replaces the existing :secret definition in the model)" ...
|
|
168
|
+
# ... "(new code for secret removal which replaces the existing :secret definition in the model)" ...
|
|
128
169
|
end
|
|
129
170
|
```
|
|
130
171
|
|
|
131
172
|
```ruby
|
|
132
173
|
cmd 'show version', clear: true do |cfg|
|
|
133
|
-
... "(new code for parsing 'show version', replaces the existing definition in the model)" ...
|
|
174
|
+
# ... "(new code for parsing 'show version', replaces the existing definition in the model)" ...
|
|
134
175
|
end
|
|
135
176
|
```
|
|
136
177
|
|
|
137
178
|
```ruby
|
|
138
179
|
cmd :ssh, prepend: true do
|
|
139
|
-
... "(code that should run first, before any code in the existing :ssh definition in the model)" ...
|
|
180
|
+
# ... "(code that should run first, before any code in the existing :ssh definition in the model)" ...
|
|
140
181
|
end
|
|
141
182
|
```
|
|
142
183
|
|
data/docs/Hooks.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
You can define an arbitrary number of hooks that subscribe to different events. The hook system is modular and different kind of hook types can be enabled.
|
|
4
4
|
|
|
5
|
+
1. [Events](#events)
|
|
6
|
+
2. Hook types
|
|
7
|
+
* [exec](#hook-type-exec)
|
|
8
|
+
* [githubrepo](#hook-type-githubrepo)
|
|
9
|
+
* [awssns](#hook-type-awssns)
|
|
10
|
+
* [slackdiff](#hook-type-slackdiff)
|
|
11
|
+
* [ciscosparkdiff](#ciscosparkdiff)
|
|
12
|
+
* [xmppdiff](#hook-type-xmppdiff)
|
|
13
|
+
|
|
5
14
|
## Configuration
|
|
6
15
|
|
|
7
16
|
Following configuration keys need to be defined for all hooks:
|
|
@@ -184,6 +193,31 @@ hooks:
|
|
|
184
193
|
privatekey: /root/.ssh/id_rsa
|
|
185
194
|
```
|
|
186
195
|
|
|
196
|
+
### Custom branch name
|
|
197
|
+
Githubrepo will use the branch name used in the
|
|
198
|
+
[git output](Outputs.md#output-git) as a remote branch name. When creating the
|
|
199
|
+
git repository for the first time, Oxidized uses the default branch name
|
|
200
|
+
configured in git with `git config --global init.defaultBranch <Name>`. The
|
|
201
|
+
default is `master`.
|
|
202
|
+
|
|
203
|
+
If you need to rename the branch name after Oxidized has created it, you may do
|
|
204
|
+
it manually. Be aware that you may break things. Make backups and do not
|
|
205
|
+
complain if something goes wrong!
|
|
206
|
+
|
|
207
|
+
1. Stop oxidized (no one should access the git repository while doing the
|
|
208
|
+
following steps)
|
|
209
|
+
2. Make a backup of your oxidized data, especially the git repository
|
|
210
|
+
3. Change directory to your oxidized git repository (as configured in oxidized
|
|
211
|
+
configuration file)
|
|
212
|
+
4. Inspect the current branches with `git branch -avv`
|
|
213
|
+
5. Rename the default branch with `git branch -m <NewName>`
|
|
214
|
+
6. Remove the reference to the old remote branch with
|
|
215
|
+
`git branch -r -d origin/<OldName>`
|
|
216
|
+
6. Inspect the change with `git branch -avv`
|
|
217
|
+
7. Restart oxidized - you're done!
|
|
218
|
+
|
|
219
|
+
Note that you will also have to clean your remote git repository.
|
|
220
|
+
|
|
187
221
|
## Hook type: awssns
|
|
188
222
|
|
|
189
223
|
The `awssns` hook publishes messages to AWS SNS topics. This allows you to notify other systems of device configuration changes, for example a config orchestration pipeline. Multiple services can subscribe to the same AWS topic.
|
data/docs/Issues.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Writing good issues
|
|
2
|
+
If you're experiencing a problem with Oxidized or need a new feature, you can
|
|
3
|
+
[submit an issue on github](https://github.com/ytti/oxidized/issues). We have
|
|
4
|
+
a great community where users help each other through the issue system.
|
|
5
|
+
|
|
6
|
+
This guide provides tips on writing your issue to make it easier for the
|
|
7
|
+
community and developers to understand and respond effectively.
|
|
8
|
+
|
|
9
|
+
Why write good issues?
|
|
10
|
+
- A clear and detailed issue improves the chances of getting your problem resolved.
|
|
11
|
+
- By spending time to write a good issue, you save developers time, contributing
|
|
12
|
+
to Oxidized’s progress without writing a line of code.
|
|
13
|
+
|
|
14
|
+
## Submit to the correct project
|
|
15
|
+
Choose the appropriate GitHub project based on your issue:
|
|
16
|
+
|
|
17
|
+
- For issues with the web frontend or REST API, go to
|
|
18
|
+
[oxidized-web](https://github.com/ytti/oxidized-web/).
|
|
19
|
+
- For issues with oxidized-script, use
|
|
20
|
+
[oxidized-script](https://github.com/ytti/oxidized-script). (note: as of
|
|
21
|
+
November 2024, oxidized-script is not actively maintained).
|
|
22
|
+
- For issues with third-party software relying on Oxidized, open an issue in
|
|
23
|
+
that specific project.
|
|
24
|
+
- For issues with Oxidized itself, go to
|
|
25
|
+
[oxidized](https://github.com/ytti/oxidized).
|
|
26
|
+
|
|
27
|
+
## Format your issue
|
|
28
|
+
- Use [GitHub Markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) to format your issue.
|
|
29
|
+
- Preview your text before submitting to ensure it renders correctly.
|
|
30
|
+
- Avoid screenshots of text. Instead, use [code formating](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code) for any relevant code snippets.
|
|
31
|
+
|
|
32
|
+
## Choose your title well
|
|
33
|
+
Keep the title brief yet descriptive. Aim to summarize the main issue or request in a few words.
|
|
34
|
+
|
|
35
|
+
## Provide detailled informations
|
|
36
|
+
Include as many relevant details as possible. At a minimum, specify:
|
|
37
|
+
|
|
38
|
+
- Oxidized version and operating system.
|
|
39
|
+
- Relevant parts of your Oxidized configuration and a brief explanation of your setup.
|
|
40
|
+
- Output of the error, if relevant.
|
|
41
|
+
- For issues related to specific devices, consider creating a YAML Simulation file (instructions below).
|
|
42
|
+
|
|
43
|
+
Also, provide clear steps to reproduce the issue, if applicable.
|
|
44
|
+
|
|
45
|
+
## Making feature requests
|
|
46
|
+
Feature requests are welcome, but please understand that unaddressed requests
|
|
47
|
+
may be closed after some time. If you need a feature urgently, consider
|
|
48
|
+
contributing code via a pull request (PR) or hiring a developer.
|
|
49
|
+
|
|
50
|
+
## Sumbit a YAML Simulation File
|
|
51
|
+
To help developers troubleshoot device-specific issues, you may be asked to submit a
|
|
52
|
+
[YAML simulation file](https://github.com/ytti/oxidized/blob/master/examples/device-simulation/README.md#creating-a-yaml-file-with-device2yamlrb) for your device.
|
|
53
|
+
|
|
54
|
+
Here's a brief overview how to do it, you can find more details in the link
|
|
55
|
+
above.
|
|
56
|
+
- Fork Oxidized on github
|
|
57
|
+
- Install dependencies (git and Ruby's Net::SSH):
|
|
58
|
+
```
|
|
59
|
+
# Adapt when not using a debian-based distro
|
|
60
|
+
sudo apt install git ruby-net-ssh
|
|
61
|
+
```
|
|
62
|
+
- Clone your forked Oxidized repository:
|
|
63
|
+
```
|
|
64
|
+
git clone git@github.com:<your github user>/oxidized.git
|
|
65
|
+
```
|
|
66
|
+
- run the device2yaml.rb script (you’ll be provided with the command set and
|
|
67
|
+
output filename to use)
|
|
68
|
+
```
|
|
69
|
+
cd oxidized/examples/device-simulation
|
|
70
|
+
# Replace user and devicename to appropriate values
|
|
71
|
+
./device2yaml.rb user@devicename -c cmdsets/ios -o yaml/asr900_26.8.1b.yaml
|
|
72
|
+
```
|
|
73
|
+
- The script waits 5 seconds between commands, and outputs the response of the
|
|
74
|
+
device. You can press "ESC" if you see the prompt and want to pass to next
|
|
75
|
+
command without waiting for the timeout.
|
|
76
|
+
- The result will be stored in `oxidized/examples/device-simulation/yaml/`.
|
|
77
|
+
- Replace any sensitive information with placeholder values in the output file.
|
|
78
|
+
- Commit & push the file to github
|
|
79
|
+
```
|
|
80
|
+
git add yaml/asr900_26.8.1b.yaml
|
|
81
|
+
git commit -m "Device simulation for ASR900"
|
|
82
|
+
git push
|
|
83
|
+
```
|
|
84
|
+
- Create a pull request (PR) in GitHub, referencing the issue number (e.g.,
|
|
85
|
+
"YAML simulation file for issue #1234").
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
data/docs/Model-Notes/Cumulus.md
CHANGED
|
@@ -11,6 +11,9 @@ A variable has been added to enable users running Cumulus Linux > 3.4.0 to targe
|
|
|
11
11
|
## NCLU
|
|
12
12
|
It is possible to switch to [NCLU](https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-44/System-Configuration/Network-Command-Line-Utility-NCLU/) as a configuration collecting method, by setting `cumulus_use_nclu` to true
|
|
13
13
|
|
|
14
|
+
## NVUE
|
|
15
|
+
It is also possible to use [NVUE](https://docs.nvidia.com/networking-ethernet-software/knowledge-base/Setup-and-Getting-Started/NVUE-Cheat-Sheet/) as a configuration collecting method, by setting `cumulus_use_nvue` to true.
|
|
16
|
+
|
|
14
17
|
### Example usage
|
|
15
18
|
|
|
16
19
|
```yaml
|
|
@@ -43,4 +46,6 @@ The default value for `cumulus_routing_daemon` is `quagga` so existing installat
|
|
|
43
46
|
|
|
44
47
|
The default value for `cumulus_use_nclu` is `false`, in case NCLU is not installed.
|
|
45
48
|
|
|
49
|
+
The default value for `cumulus_use_nvue` is `false`, in case NVUE is not installed.
|
|
50
|
+
|
|
46
51
|
Back to [Model-Notes](README.md)
|
data/docs/Model-Notes/FSOS.md
CHANGED
|
@@ -7,5 +7,10 @@ This has been tested against the following models and OS versions
|
|
|
7
7
|
|S3400-48T4SP |Version 2.0.2J Build 81736 |
|
|
8
8
|
|S3400-48T4SP |Version 2.0.2J Build 95262 |
|
|
9
9
|
|S3400-48T6SP |Version 2.2.0F Build 109661 |
|
|
10
|
+
|S3410-24TS-P |S3410_FSOS 11.4(1)B74S5 |
|
|
11
|
+
|S5850-48T4Q |Version 7.0.4.34 |
|
|
12
|
+
|S5800-48MBQ |Version 7.0.4.21 |
|
|
13
|
+
|S5810-48TS-P |S5810_FSOS 11.4(1)B74S8, Release(10200711) |
|
|
14
|
+
|S5860-20SQ |S5860_FSOS 12.4(1)B0101P1S4 |
|
|
10
15
|
|
|
11
16
|
Back to [Model-Notes](README.md)
|
data/docs/Model-Notes/FortiOS.md
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
# FortiOS Configuration
|
|
2
2
|
|
|
3
|
-
Create user oxidized with ED25519 public key
|
|
3
|
+
## Create user oxidized with ED25519 public key
|
|
4
|
+
You can use a user/password for retrieving the configuration or use a SSH public key:
|
|
4
5
|
|
|
5
6
|
```text
|
|
6
7
|
config system admin
|
|
7
8
|
edit oxidized
|
|
8
9
|
set trusthost1 192.0.2.1 255.255.255.255
|
|
9
10
|
set accprofile "super_admin_readonly"
|
|
10
|
-
set ssh-public-key1 "ssh-ed25519
|
|
11
|
+
set ssh-public-key1 "ssh-ed25519 AAAAThisIsJustAnExampleKey_UseYourOxidizedPUBLICKEY oxidized@librenms"
|
|
11
12
|
end
|
|
12
13
|
```
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
## Configuration changes / hiding passwords
|
|
17
|
+
Fortigate reencrypts its passwords every time the configuration is shown.
|
|
18
|
+
This produces a lot of config changes.
|
|
19
|
+
If you don't want to have a new version every time the configuration is
|
|
20
|
+
downloaded, you can hide all secrets. Beware that you won't have a full backup,
|
|
21
|
+
as all passwords will be replaced with <configuration removed>
|
|
16
22
|
|
|
17
23
|
```yaml
|
|
18
24
|
models:
|
|
@@ -21,8 +27,18 @@ models:
|
|
|
21
27
|
remove_secret: true
|
|
22
28
|
```
|
|
23
29
|
|
|
30
|
+
## config vs. full config
|
|
31
|
+
On fortios, you can get a configuration without default values (`show .`) or
|
|
32
|
+
including all the default values (`show full-configuration`).
|
|
24
33
|
|
|
34
|
+
The full configuration can be quite long and produce time-outs.
|
|
35
|
+
Beginning with oxidized 0.30.1, the default is to get the short configuration.
|
|
25
36
|
|
|
26
|
-
|
|
37
|
+
If you need the full configuration, you can activate it in oxidized config file:
|
|
38
|
+
```yaml
|
|
39
|
+
models:
|
|
40
|
+
fortios:
|
|
41
|
+
vars:
|
|
42
|
+
fullconfig: true
|
|
43
|
+
```
|
|
27
44
|
|
|
28
|
-
Back to [Model-Notes](README.md)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# HPE Aruba Networking devices
|
|
2
|
+
HPE Aruba offers various networking devices with different operating systems.
|
|
3
|
+
|
|
4
|
+
## HPE Aruba Networking Instant Mode (Aruba Instant)
|
|
5
|
+
[Aruba Instant](https://www.arubanetworks.com/techdocs/ArubaDocPortal/content/cons-instant-home.htm)
|
|
6
|
+
runs on IAPs (Instant Access points).
|
|
7
|
+
|
|
8
|
+
The Oxidized model is [ArubaInstant](/lib/oxidized/model/arubainstant.rb).
|
|
9
|
+
When run on the virtual WLAN controller, it will also collect the list of the
|
|
10
|
+
WLAN-AP linked to the controller.
|
|
11
|
+
|
|
12
|
+
The aosw model for AOS 8 used to be used for Aruba Instant, but it does not work
|
|
13
|
+
as well and may stop working in the future.
|
|
14
|
+
|
|
15
|
+
## HPE Aruba Networking Wireless Operating System 8 (AOS 8)
|
|
16
|
+
[AOS 8](https://www.arubanetworks.com/techdocs/ArubaDocPortal/content/cons-aos-home.htm)
|
|
17
|
+
runs on WLAN controllers (mobility controllers) and controller-managed access
|
|
18
|
+
points.
|
|
19
|
+
|
|
20
|
+
The Oxidized model is [aosw](/lib/oxidized/model/aosw.rb).
|
|
21
|
+
|
|
22
|
+
## HPE Aruba Networking CX Switch Operating System (AOS-CX)
|
|
23
|
+
[AOS-CX](https://www.arubanetworks.com/techdocs/AOS-CX/help_portal/Content/home.htm)
|
|
24
|
+
is the operating system for the newer CX-Series.
|
|
25
|
+
|
|
26
|
+
The Oxidized model is [aoscx](/lib/oxidized/model/aoscx.rb).
|
|
27
|
+
|
|
28
|
+
## Older Models
|
|
29
|
+
Older Devices like ProCurve or 3Com/Comware are listed under the Vendor "HP" in
|
|
30
|
+
the [Supported OS Types](docs/Supported-OS-Types.md) list.
|
|
31
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Mikrotik RouterOS Configuration
|
|
2
|
+
|
|
3
|
+
RouterOS 7.12 and later support ED25519 keys.
|
|
4
|
+
|
|
5
|
+
Create a key pair, save the public key (``id_ed25519.pub``) and save it on flash. Create a user
|
|
6
|
+
and attach the public key.
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
[admin@mikrotik] > /user add name=oxidized group=read disabled=no
|
|
10
|
+
[admin@mikrotik] > /user ssh-keys import public-key-file=id_ed25519.pub user=oxidized
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Oxidized can now retrieve your configuration!
|
|
14
|
+
|
|
15
|
+
Back to [Model-Notes](README.md)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Siklu Multihaul Terragraph Radio Line
|
|
2
|
+
|
|
3
|
+
The Siklu Multihaul TG radios use a different command set than the other Siklu radios.
|
|
4
|
+
|
|
5
|
+
To use this model, your source must designate the model as siklumhtg instead of siklu. It also requires that the MH-TG radio be running at least version 2.1.2.
|
|
6
|
+
|
|
7
|
+
Back to [Model-Notes](README.md)
|
data/docs/Outputs.md
CHANGED
|
@@ -63,6 +63,8 @@ output:
|
|
|
63
63
|
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
Over time, your Git repository will expand, potentially leading to performance issues. For instructions on how to address this, see [git performance issues with large device counts](Troubleshooting.md#git-performance-issues-with-large-device-counts).
|
|
67
|
+
|
|
66
68
|
## Output: Git-Crypt
|
|
67
69
|
|
|
68
70
|
This uses the gem git and system git-crypt interfaces. Have a look at [GIT-Crypt](https://www.agwa.name/projects/git-crypt/) documentation to know how to install it.
|
data/docs/Release.md
CHANGED
|
@@ -5,45 +5,48 @@ This document is targeted at oxidized maintainers. It describes the release proc
|
|
|
5
5
|
Run `git diff 0.30.0..master` (where `0.30.0` is to be changed to the last release) and review
|
|
6
6
|
all the changes that have been done. Have a specific look at changes you don't understand.
|
|
7
7
|
|
|
8
|
+
For a graphical compare, use `git difftool -d 0.30.0..master`.
|
|
9
|
+
|
|
8
10
|
## Test, test test!
|
|
9
11
|
Test the git code and the container against as much device types an environments as you can.
|
|
10
12
|
|
|
11
13
|
Do not integrate late PRs into master if they do not fix issues for the release. The must wait for the next release.
|
|
12
14
|
|
|
13
15
|
## Version numbering
|
|
14
|
-
Oxidized versions are nummered like
|
|
15
|
-
-
|
|
16
|
-
- minor is incremented when releasing
|
|
16
|
+
Oxidized versions are nummered like major.minor.patch
|
|
17
|
+
- currently, the major version is 0.
|
|
18
|
+
- minor is incremented when releasing new features.
|
|
19
|
+
- patch is incremented when releasing fixes only.
|
|
17
20
|
|
|
18
|
-
##
|
|
21
|
+
## Prepare the release in your working repository
|
|
19
22
|
1. Checkout the master branch of oxidized. Make sure you are up to date with origin.
|
|
20
23
|
2. Change the version in lib/oxidized/version.rb
|
|
21
24
|
3. Change CHANGELOG.md to replace [Unreleased] with [0.xx.yy – 202Y-MM-DD]
|
|
22
25
|
4. Run `git diff` to check your changes
|
|
23
26
|
5. Commit the changes to the local git repository with a commit message “chore(release): release version 0.xx.yy”
|
|
24
27
|
6. Tag the commit with `git tag -a 0.xx.yy -m "Release 0.xx.yy"`
|
|
25
|
-
7.
|
|
28
|
+
7. Build the gem with ‘rake build’
|
|
29
|
+
8. Run `git diff` to check if there have been more changes (there shouldn't)
|
|
30
|
+
9. Install an test the gem locally
|
|
31
|
+
```
|
|
32
|
+
gem install --user-install pkg/oxidized-0.30.0.gem
|
|
33
|
+
~/.local/share/gem/ruby/3.1.0/bin/oxidized
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Release in github
|
|
37
|
+
Push the change and the tag to github:
|
|
26
38
|
```
|
|
27
39
|
git push
|
|
28
40
|
git push origin 0.xx.yy
|
|
29
41
|
```
|
|
30
42
|
|
|
31
|
-
## Release in github
|
|
32
43
|
Make a release from the tag in github
|
|
33
44
|
- Thank the contributors
|
|
34
45
|
- Only describe major changes, and refer to CHANGELOG.md
|
|
35
46
|
- List new contributors (generated automatically)
|
|
36
47
|
|
|
37
48
|
## Release in rubygems
|
|
38
|
-
|
|
39
|
-
2. Install an test the gem locally
|
|
40
|
-
```
|
|
41
|
-
gem install --user-install pkg/oxidized-0.30.0.gem
|
|
42
|
-
~/.local/share/gem/ruby/3.1.0/bin/oxidized
|
|
43
|
-
```
|
|
44
|
-
3. Push the gem with ‘rake push’
|
|
45
|
-
|
|
46
|
-
You need an account at rubygems which is allowed to push oxidized
|
|
49
|
+
Push the gem with ‘rake push’
|
|
47
50
|
|
|
48
51
|
## Release in docker.io
|
|
49
52
|
The OCI-Containter is automatically build and pushed to docker.io by github
|
data/docs/Sources.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Sources
|
|
2
2
|
|
|
3
|
+
Note: in all sources, the map attribute `name` is mandatory. It is used to identify the node and
|
|
4
|
+
for example choose the filename for the configuration output.
|
|
5
|
+
|
|
3
6
|
## Source: CSV
|
|
4
7
|
|
|
5
8
|
One line per device, colon separated. If `ip` isn't present, a DNS lookup will be done against `name`. For large installations, setting `ip` will dramatically reduce startup time.
|
|
@@ -55,6 +58,24 @@ and within: `~/.gnupg/gpg.conf`
|
|
|
55
58
|
pinentry-mode loopback
|
|
56
59
|
```
|
|
57
60
|
|
|
61
|
+
## Source: JSONFile
|
|
62
|
+
|
|
63
|
+
One object per device. Supports GPG encryption like the CSV Source.
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
source:
|
|
67
|
+
default: jsonfile
|
|
68
|
+
jsonfile:
|
|
69
|
+
file: /var/lib/oxidized/router.json
|
|
70
|
+
map:
|
|
71
|
+
name: hostname
|
|
72
|
+
model: os
|
|
73
|
+
username: username
|
|
74
|
+
password: password
|
|
75
|
+
vars_map:
|
|
76
|
+
enable: enable
|
|
77
|
+
```
|
|
78
|
+
|
|
58
79
|
## Source: SQL
|
|
59
80
|
|
|
60
81
|
Oxidized uses the `sequel` ruby gem. You can use a variety of databases that aren't explicitly listed. For more information visit https://github.com/jeremyevans/sequel Make sure you have the correct adapter!
|
data/docs/Supported-OS-Types.md
CHANGED
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
|Arbor Networks |ArbOS |[arbos](/lib/oxidized/model/arbos.rb) | |[ArbOS](Model-Notes/ArbOS.md)
|
|
21
21
|
|Arista |EOS |[eos](/lib/oxidized/model/eos.rb) | |[EOS](Model-Notes/EOS.md)
|
|
22
22
|
|Arris |C4CMTS |[c4cmts](/lib/oxidized/model/c4cmts.rb)
|
|
23
|
-
|Aruba |AOS-CX |[aoscx](/lib/oxidized/model/aoscx.rb) |@robertcheramy
|
|
24
|
-
| |AOSW |[
|
|
23
|
+
|Aruba |AOS-CX |[aoscx](/lib/oxidized/model/aoscx.rb) |@robertcheramy |[HPE Aruba](Model-Notes/HPEAruba.md)
|
|
24
|
+
| |AOSW |[aosw](/lib/oxidized/model/aosw.rb) |[HPE Aruba](Model-Notes/HPEAruba.md)
|
|
25
|
+
| |ArubaInstant |[arubainstant](/lib/oxidized/model/arubainstant.rb)|@robertcheramy |[HPE Aruba](Model-Notes/HPEAruba.md)
|
|
25
26
|
|Asterfusion |AsterNOS |[asternos](/lib/oxidized/model/asternos.rb)
|
|
26
27
|
|AudioCodes |AudioCodes |[audiocodes](/lib/oxidized/model/audiocodes.rb)
|
|
27
28
|
| |MediaPack MP-1xx, Mediant1000 |[audiocodesmp](/lib/oxidized/model/audiocodesmp.rb)
|
|
@@ -70,6 +71,7 @@
|
|
|
70
71
|
|DELL |PowerConnect |[powerconnect](/lib/oxidized/model/powerconnect.rb)
|
|
71
72
|
| |AOSW |[aosw](/lib/oxidized/model/aosw.rb) | |Same model as Aruba Wireless
|
|
72
73
|
| |DellX |[dellx](/lib/oxidized/model/dellx.rb)
|
|
74
|
+
| |Dell EMC Networking OS6 |[os6](/lib/oxidized/model/os6.rb) | |[Dell EMC Networking OS6](Model-Notes/OS6.md)
|
|
73
75
|
| |Dell EMC Networking OS10 |[os10](/lib/oxidized/model/os10.rb) | |[Dell EMC Networking OS10](Model-Notes/OS10.md)
|
|
74
76
|
|D-Link |D-Link |[dlink](/lib/oxidized/model/dlink.rb)
|
|
75
77
|
| |D-Link cisco like CLI |[dlinknextgen](/lib/oxidized/model/dlinknextgen.rb)
|
|
@@ -82,7 +84,8 @@
|
|
|
82
84
|
| |Enterasys 800-Series |[enterasys800](/lib/oxidized/model/enterasys800.rb)
|
|
83
85
|
| |WM |[mtrlrfs](/lib/oxidized/model/mtrlrfs.rb)
|
|
84
86
|
| |XOS, ExtremeWare |[xos](/lib/oxidized/model/xos.rb)
|
|
85
|
-
|F5 |
|
|
87
|
+
|F5 |F5OS |[tmos](/lib/oxidized/model/f5os.rb)
|
|
88
|
+
| |TMOS |[tmos](/lib/oxidized/model/tmos.rb)
|
|
86
89
|
|Fiberstore (fs.com) |S3400 |[fsos](/lib/oxidized/model/fsos.rb) | |[FSOS](Model-Notes/FSOS.md)
|
|
87
90
|
| |S3800 |[gcombnps](/lib/oxidized/model/gcombnps.rb)
|
|
88
91
|
| |S3900 |[edgecos](/lib/oxidized/model/edgecos.rb)
|
|
@@ -119,7 +122,7 @@
|
|
|
119
122
|
|Linuxgeneric |CentOS |[linuxgeneric](/lib/oxidized/model/linuxgeneric.rb)| |[LinuxGeneric](Model-Notes/LinuxGeneric.md)
|
|
120
123
|
|Mellanox |MLNX-OS |[mlnxos](/lib/oxidized/model/mlnxos.rb)
|
|
121
124
|
| |Voltaire |[voltaire](/lib/oxidized/model/voltaire.rb)
|
|
122
|
-
|Mikrotik |RouterOS |[routeros](/lib/oxidized/model/routeros.rb)
|
|
125
|
+
|Mikrotik |RouterOS |[routeros](/lib/oxidized/model/routeros.rb) | |[RouterOS](Model-Notes/RouterOS.md)
|
|
123
126
|
| |SwOS and SwOS Lite |[swos](/lib/oxidized/model/swos.rb)
|
|
124
127
|
|Mimosa |Mimosa (B11) |[mimosab11](/lib/oxidized/model/mimosab11.rb)
|
|
125
128
|
|Motorola |RFS |[mtrlrfs](/lib/oxidized/model/mtrlrfs.rb)
|
|
@@ -145,7 +148,8 @@
|
|
|
145
148
|
|Ruijie Networks |RGOS |[rgos](/lib/oxidized/model/rgos.rb)
|
|
146
149
|
|QTECH |QSW-2800, QSW-3400, QSW-3450, QSW-3500|[qtech](/lib/oxidized/model/qtech.rb)
|
|
147
150
|
|Quanta |Quanta / VxWorks 6.6 (1.1.0.8)|[quantaos](/lib/oxidized/model/quantaos.rb)
|
|
148
|
-
|Siklu |EtherHaul |[siklu](/lib/oxidized/model/siklu.rb)
|
|
151
|
+
|Siklu |EtherHaul |[siklu](/lib/oxidized/model/siklu.rb) |@bdg-robert
|
|
152
|
+
| |Multihaul TG |[siklumhtg](/lib/oxidized/model/siklumhtg.rb) |@bdg-robert |[Siklu Multihaul TG](Model-Notes/SikluMHTG.md)
|
|
149
153
|
|Seiko Solutions |SmartCS, SmartCS mini |[smartcs](/lib/oxidized/model/smartcs.rb)
|
|
150
154
|
|SonicWALL |SonicOS |[sonicos](/lib/oxidized/model/sonicos.rb)
|
|
151
155
|
|SNR |SNR-S300G, S2xxx, S3xxx, S4xxx|[dcnos](/lib/oxidized/model/dcnos.rb)
|
|
@@ -165,8 +169,10 @@
|
|
|
165
169
|
| |Edgeos |[edgeos](/lib/oxidized/model/edgeos.rb)
|
|
166
170
|
| |EdgeSwitch |[edgeswitch](/lib/oxidized/model/edgeswitch.rb)
|
|
167
171
|
| |AirFiber |[airfiber](/lib/oxidized/model/airfiber.rb)
|
|
172
|
+
|Uplink |EP4440-DP |[EP4440](/lib/oxidized/model/uplinkolt.rb) | |Might support all EP4440 series
|
|
168
173
|
|VMWare |NSX Edge (configuration) |[nsxconfig](/lib/oxidized/model/nsxconfig.rb)
|
|
169
174
|
| |NSX Edge (firewall rules) |[nsxfirewall](/lib/oxidized/model/nsxfirewall.rb)
|
|
175
|
+
| |NSX Distributed Firewall |[nsxdfw](/lib/oxidized/model/nsxdfw.rb)
|
|
170
176
|
|Watchguard |Fireware OS |[firewareos](/lib/oxidized/model/firewareos.rb)
|
|
171
177
|
|Westell |Westell 8178G, Westell 8266G |[weos](/lib/oxidized/model/weos.rb)
|
|
172
178
|
|YAMAHA |YAMAHA NVR/RTX Series |[yamaha](/lib/oxidized/model/yamaha.rb)
|
data/docs/Troubleshooting.md
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
# Troubleshooting
|
|
2
|
+
## Table of contents
|
|
3
|
+
1. [Connects but no/partial configuration collected](#oxidized-connects-to-a-supported-device-but-no-or-partial-configuration-is-collected)
|
|
4
|
+
2. [No push to remote git repository](#oxidized-does-not-push-to-a-remote-git-repository-hook-githubrepo)
|
|
5
|
+
3. [Git performance issues with large device counts](#git-performance-issues-with-large-device-counts)
|
|
6
|
+
4. [Oxidized ignores the changes I made to its git repository](#oxidized-ignores-the-changes-i-made-to-its-git-repository)
|
|
2
7
|
|
|
3
8
|
## Oxidized connects to a supported device but no (or partial) configuration is collected
|
|
4
9
|
|
|
@@ -80,3 +85,33 @@ If you are running oxidized in a container, you need to map /home/oxidized/.ssh
|
|
|
80
85
|
container to a local repository and save the known_hosts in the local repository. You can
|
|
81
86
|
find an example how to do this under [examples/podman-compose](/examples/podman-compose/)
|
|
82
87
|
|
|
88
|
+
## Git performance issues with large device counts
|
|
89
|
+
When you use git to store your configurations, the size of your repository will
|
|
90
|
+
grow over time. This growth can lead to performance issues. To resolve these issues, you should perform a Git garbage collection on your repository.
|
|
91
|
+
|
|
92
|
+
Follow these steps to do so:
|
|
93
|
+
|
|
94
|
+
1. Stop oxidized (no one should access the git repository while running garbage collection)
|
|
95
|
+
2. Make a backup of your oxidized data, especially the Git repository
|
|
96
|
+
3. Change directory your oxidized git repository (as configured in oxidized configuration file)
|
|
97
|
+
4. Execute the command `git gc` to run the garbage collection
|
|
98
|
+
5. Restart oxidized - you're done!
|
|
99
|
+
|
|
100
|
+
## Oxidized ignores the changes I made to its git repository
|
|
101
|
+
First of all: you shouldn't manipulate the git repository of oxidized. Don't
|
|
102
|
+
create it, don't modify it, leave it alone. You can break things. You have
|
|
103
|
+
been warned.
|
|
104
|
+
|
|
105
|
+
In some situations, you may need to make changes to the git repository of
|
|
106
|
+
oxidized. Stop oxidized, make backups, and be sure you know exactly what you
|
|
107
|
+
are doing. You have been warned.
|
|
108
|
+
|
|
109
|
+
If you simply clone the git repository, make changes and push them, oxidized
|
|
110
|
+
will ignore these modifications. This is because oxidized caches the HEAD tree
|
|
111
|
+
in the index and `git push` does not update the index because the repository is
|
|
112
|
+
a bare repo and not a working directory repository.
|
|
113
|
+
|
|
114
|
+
So, you have to update the index manually. For this, go into oxidized repo, and
|
|
115
|
+
run `git ls-tree -r HEAD | git update-index --index-info`. While you're at it,
|
|
116
|
+
consider running `git gc`, as oxidized cannot garbage collect the repo (this
|
|
117
|
+
is not supported in [Rugged](https://github.com/libgit2/rugged)).
|