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
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)).
|