This program is able to import inventory files created via bb-ricardo/check_redfish
You need to have a source section in your settings.ini
file with following type:
type = check_redfish
All options for this source are described in the settings-example.ini file.
If you have multiple redfish import folders just add another source with the same type.
/opt/check_redfish/check_redfish.py \
-H 10.5.42.23 \
-f /etc/icinga2/ilo_credentials \
--inventory --all \
--inventory_file /tmp/inventory_files/my-server.json \
--inventory_id 23
- inventory file needs to have a
.json
suffix - A matching device needs to be already present in NetBox
- the inventory needs to have either a
invenotry_id
which matches a NetBox device id or - the system serial needs to match a device in NetBox
- the inventory needs to have either a
You might be interested in this description. This describes how discovered IP addresses and interfaces will be added to NetBox.
At first some custom fields will be added if not already present.
- firmware: stores the item firmware if present
- inventory-type: the type of the inventory item (i.e.: Power Supply)
- inventory-size: the "size" of the inventory item
- DIMM: module size in GB
- Physical Drive: drive size in GB
- CPU: number of cores and threads
- ...
- inventory-speed: the "speed" of the inventory item
- Physical Drive (non SSD): rotational speed in RPM
- DIMM: Module speed in MHz
- CPU: speed in GHz
- NIC: Interface speed in GBit/s (or MBit/s for 100Base-T)
- ...
- health: the last discovered health status of the inventory item, usually OK
{
"inventory": {
"chassi": [],
"fan": [],
"firmware": [],
"logical_drive": [],
"manager": [],
"memory": [],
"network_adapter": [],
"network_port": [],
"physical_drive": [],
"power_supply": [
{
"bay": 1,
"capacity_in_watt": 500,
"chassi_ids": [
1
],
"firmware": "1.03",
"health_status": "OK",
"id": "0",
"input_voltage": 224,
"last_power_output": 110,
"model": "XXXXXX-B21",
"name": "HpeServerPowerSupply",
"operation_status": "Enabled",
"part_number": "XXXXXX-001",
"serial": "XXXXXXX",
"type": "AC",
"vendor": "CHCNY"
},
{
"bay": 2,
"capacity_in_watt": 500,
"chassi_ids": [
1
],
"firmware": "1.03",
"health_status": "OK",
"id": "1",
"input_voltage": 228,
"last_power_output": 110,
"model": "XXXXXX-B21",
"name": "HpeServerPowerSupply",
"operation_status": "Enabled",
"part_number": "XXXXXX-001",
"serial": "XXXXXXX",
"type": "AC",
"vendor": "CHCNY"
}
],
"processor": [],
"storage_controller": [],
"storage_enclosure": [],
"system": [],
"temperature": []
},
"meta": {
"data_retrieval_issues": {},
"duration_of_data_collection_in_seconds": 1.002901,
"host_that_collected_inventory": "inventory-collector.example.com",
"inventory_id": 23,
"inventory_layout_version": "1.2.0",
"script_version": "1.2.0",
"start_of_data_collection": "2021-04-01T09:09:07+02:00"
}
}
First the source will try to open the directory defined in inventory_file_path
and find all files with the
suffix .json
.
Then it will iterate over all inventory files and try to add the Inventory to NetBox.
The id in meta.invenotry_id
is used to find a matching NetBox device with the same ID.
If this was unsuccessful the inventory systems serial is used to find a matching device.
If that failed as well this inventory files is skipped.
inventory_class | inventory-type | NetBox object |
---|---|---|
system | N/A | dcim/devices |
power_supply | Power Supply | dcim/power-ports dcim/inventory-items |
fan | Fan | dcim/inventory-items |
memory | DIMM | dcim/inventory-items |
proc | CPU | dcim/inventory-items |
physical_drive | Physical Drive | dcim/inventory-items |
storage_controller | Storage Controller | dcim/inventory-items |
storage_enclosure | Storage Enclosure | dcim/inventory-items |
network_adapter | NIC | dcim/inventory-items |
network_port | N/A | dcim/interfaces |
manager | Manager | dcim/inventory-items |