Child pages
  • OpenAudIT-NMIS Integration

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Review and clarify some parts


This integration sits between and communicates with Open-AudIT and NMIS. It is designed to work as its own piece unit of software and makes very few assumptions about your unique setup. The integration only requires as much information about NMIS and Open-AudIT as is necessary to communicate with them.

The following diagram shows the integration running on a single, shared server running both NMIS and Open-AudIT.

As you can seeshown above, the integration needs to know authentication details for the Open-AudIT server, as well as the location of the NMIS node admin tool. After that, it manages its own state through a local lookup file.


Within the rules file, you define NMIS fields and give them a list of candidate values (a ruleset). These values can be either constants (strings), or they can refer to fields from the device itself. The integration will use the first value it can resolve , or the empty string if it cannot resolve any values.


Code Block
 %hash = (
  'nmis' => {

    # Different rules can be defined for when an NMIS node is created and when
    # it is updated. This lets you avoid overwriting values the you edit in NMIS.
    'create' => {

      # version will resolve to the 'os_version' field in the device if it exists, or
      # an empty string otherwise.
      'version' => ['$DEVICE.os_version'],

      # roleType and group try to use a value from the device if it exists, but
      # it will fall back to a constant if it does not.
      'roleType' => ['$DEVICE.nmis_role', 'core'],
      'group' => ['$DEVICE.nmis_group', 'Open-AudIT'],

      # host checks multiple fields from the device, choosing the first one
      # that has a value (or the empty string if no values are found).
      'host' => ['$DEVICE.ip', '$DEVICE.hostname','$DEVICE.dns_hostname', '$DEVICE.fqdn'],

      # active, ping, and model just use a default value when any new node is created.
      'active' => ['true'],
      'ping' => ['true'],
      'model' => ['automatic'],
      # name uses an array of candidates like all the other fields, but it also applies
      # a set of transform functions to the value after a candidate is chosen.
      'name' => {
        'candidates' => ['$'],
        'transforms' => ['trim_whitespace'],

    # Only the node fields defined here will be considered for an update.
    'update' => {

      'roleType' => ['$DEVICE.nmis_role', 'core'],
      'group' => ['$DEVICE.nmis_group', 'Open-AudIT'],



The following table shows the node structure generated from a device that selected and an Open-AudIT device, a set of transform rules applied, and the node structure generated after applying the transform rules. These documents have been simplified to make the changes easy to understand.