Parent directory needs to be created manually, one file per device, with most recent running config.
output:
file:
directory: /var/lib/oxidized/configs
This uses the rugged/libgit2 interface. So you should remember that normal Git hooks will not be executed.
For a single repository containing all devices:
output:
default: git
git:
user: Oxidized
email: [email protected]
repo: "/var/lib/oxidized/devices.git"
And for group-based repositories:
output:
default: git
git:
user: Oxidized
email: [email protected]
repo: "/var/lib/oxidized/git-repos/default.git"
Oxidized will create a repository for each group in the same directory as the default.git
. For
example:
host1:ios:first
host2:nxos:second
This will generate the following repositories:
$ ls /var/lib/oxidized/git-repos
default.git first.git second.git
If you would like to use groups and a single repository, you can force this with the single_repo
config.
output:
default: git
git:
single_repo: true
repo: "/var/lib/oxidized/devices.git"
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.
This uses the gem git and system git-crypt interfaces. Have a look at GIT-Crypt documentation to know how to install it. Additionally to user and email informations, you have to provide the users ID that can be a key ID, a full fingerprint, an email address, or anything else that uniquely identifies a public key to GPG (see "HOW TO SPECIFY A USER ID" in the gpg man page).
For a single repository containing all devices:
output:
default: gitcrypt
gitcrypt:
user: Oxidized
email: [email protected]
repo: "/var/lib/oxidized/devices"
users:
- "0x0123456789ABCDEF"
- "<[email protected]>"
And for group-based repositories:
output:
default: gitcrypt
gitcrypt:
user: Oxidized
email: [email protected]
repo: "/var/lib/oxidized/git-repos/default"
users:
- "0xABCDEF0123456789"
- "0x0123456789ABCDEF"
Oxidized will create a repository for each group in the same directory as the default
. For
example:
host1:ios:first
host2:nxos:second
This will generate the following repositories:
$ ls /var/lib/oxidized/git-repos
default.git first.git second.git
If you would like to use groups and a single repository, you can force this with the single_repo
config.
output:
default: gitcrypt
gitcrypt:
single_repo: true
repo: "/var/lib/oxidized/devices"
users:
- "0xABCDEF0123456789"
- "0x0123456789ABCDEF"
Please note that user list is only updated once at creation.
The HTTP output will POST a config to the specified HTTP URL. Basic username/password authentication is supported.
Example HTTP output configuration:
output:
default: http
http:
user: admin
password: changeit
url: "http://192.168.162.50:8080/db/coll"
If you prefer to have different outputs in different files and/or directories, you can easily do this by modifying the corresponding model. To change the behaviour for IOS, you would edit lib/oxidized/model/ios.rb
(run gem contents oxidized
to find out the full file path).
For example, let's say you want to split out show version
and show inventory
into separate files in a directory called nodiff
which your tools will not send automated diffstats for. You can apply a patch along the lines of
- cmd 'show version' do |cfg|
- comment cfg.lines.first
+ cmd 'show version' do |state|
+ state.type = 'nodiff'
+ state
- cmd 'show inventory' do |cfg|
- comment cfg
+ cmd 'show inventory' do |state|
+ state.type = 'nodiff'
+ state
+ end
- cmd 'show running-config' do |cfg|
- cfg = cfg.each_line.to_a[3..-1].join
- cfg.gsub! /^Current configuration : [^\n]*\n/, ''
- cfg.sub! /^(ntp clock-period).*/, '! \1'
- cfg.gsub! /^\ tunnel\ mpls\ traffic-eng\ bandwidth[^\n]*\n*(
+ cmd 'show running-config' do |state|
+ state = state.each_line.to_a[3..-1].join
+ state.gsub! /^Current configuration : [^\n]*\n/, ''
+ state.sub! /^(ntp clock-period).*/, '! \1'
+ state.gsub! /^\ tunnel\ mpls\ traffic-eng\ bandwidth[^\n]*\n*(
(?:\ [^\n]*\n*)*
tunnel\ mpls\ traffic-eng\ auto-bw)/mx, '\1'
- cfg
+ state = Oxidized::String.new state
+ state.type = 'nodiff'
+ state
which will result in the following layout
diff/$FQDN--show_running_config
nodiff/$FQDN--show_version
nodiff/$FQDN--show_inventory