You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

NMIS provides a number of different methods for managing your nodes, both GUI-based and commandline-oriented. This document describes the commandline tools present in versions 8.5.4 and newer.

Bulk Import and Export

For importing lots of nodes in one go from a CSV file, NMIS has been providing  admin/import_nodes.pl for a long time. There is also a sibling admin/export_nodes.pl tool, and both are documented on the Bulk Import page. The main benefit of these tools is utmost simplicity, but at the cost of some flexibility: import_nodes does not make all common node properties controllable or accessible.

Node administration with node_admin.pl

Version 8.5.4G brings in a new, more fine-grained and capable tool: admin/node_admin.pl. It's scriptable and pipelineable, and can perform all node-related operations: creation, updating, renaming, exporting and deletion of nodes.

Basic Operation

Run the tool with no options or -? or -h and it'll display a simple help page:

./admin/node_admin.pl -h
Usage: node_admin.pl act=[action to take] [extras...]
        node_admin.pl act=list
        node_admin.pl act={create|export|update|delete} node=nodeX
        node_admin.pl act=mktemplate [placeholder=1/0]
        node_admin.pl act=rename old=nodeX new=nodeY
mktemplate: prints blank template for node creation, 
 optionally with __REPLACE_XX__ placeholder
create: requires file=NewNodeDef.json
export: exports to file=someFile.json (or STDOUT if no file given)
update: updates existing node from file=someFile.json (or STDIN)
delete: only deletes if confirm=yes (in uppercase) is given
extras: deletedata=<true,false> which makes delete also
delete all RRD files for the node. default is false.
extras: conf=<configname> to use different configuration
extras: debug={1..9,verbose} sets debugging verbosity
extras: info=1 sets general verbosity

Node listing and exporting

Given the argument act=list, node_admin will simply print a list of all known node names.

To see or save a node's information, run admin/node_admin.pl act=export node=somenodename, and it'll print the node's configuration in JSON format to your console. If you want to save that data in a file, either add the argument file=somefilename.json or redirect the output with > somefile. Here is an example of what to expect:

./admin/node_admin.pl act=export node=mytestbox
{
   "active" : "true",
   "businessService" : "my own test system",
   "collect" : "true",
   "community" : "verySecETr",
   "group" : "HQDev",
   "host" : "mytestbox.opmantek.com",
   "location" : "office",
   "model" : "automatic",
   "name" : "mytestbox",
   "netType" : "lan",
   "notes" : "there are no notes for this baby",
   "ping" : "true",
   "roleType" : "access",
   "version" : "snmpv2c"
}

Node Updating

Naturally node_admin does not just export node data but also consumes it for modifying a node in place and for creation of new nodes.

To change a node's configuration (except node renaming!), simply dump the node configuration with act=export, then edit the node with act=update. Both require that you give the node name in question, and both work either from files (with a file=somefile.json argument), or via STDOUT/STDIN/pipeline.

For example, this pipelined invocation would change the node from the example above to a less misspelled community:

./admin/node_admin.pl act=export node=mytestbox | sed -e 's/verySecETr/veryVerySecret/' | ./admin/node_admin.pl act=update node=mytestbox

You can also use file=- to indicate that STDOUT should be used for export or STDIN be used for update/creation. The act=update operation doesn't create new  nodes, and it  replaces the whole set of node configuration settings with your new configuration input.

Creation of Nodes

The creation of nodes requires you to use a template (shown below) instead of using a command line argument; this is because NMIS requires numerous node properties to be set up correctly making it easy to miss some when operating via command line arguments. Node creation is triggered by the argument act=create, which behaves mostly like act=update, except that it doesn't touch existing nodes. To help you with starting a node configuration document from scratch (or in a scripted fashion), there is another command, act=mktemplate, which prints a blank but documented template which you can save and fill in. If you add placeholder=1 to the command line, then node_admin fills the template with easily matchable replacement placeholders, like so:

./admin/node_admin act=mktemplate placeholder=1
// ... some comments
{
   "active" : "__REPLACE_ACTIVE__",
   "collect" : "__REPLACE_COLLECT__",

This makes it very easy to fill in the template with a script or some other external tool.

To create a node using this format start with:

  1. Run the command: ./node_admin.pl act=mktemplate placeholder=1
    The results of this command are shown below:

    {
       "active" : "__REPLACE_ACTIVE__",
       "collect" : "__REPLACE_COLLECT__",
       "community" : "__REPLACE_COMMUNITY__",
       "group" : "__REPLACE_GROUP__",
       "host" : "__REPLACE_HOST__",
       "location" : "__REPLACE_LOCATION__",
       "model" : "__REPLACE_MODEL__",
       "name" : "__REPLACE_NAME__",
       "netType" : "__REPLACE_NETTYPE__",
       "notes" : "__REPLACE_NOTES__",
       "ping" : "__REPLACE_PING__",
       "roleType" : "__REPLACE_ROLETYPE__",
       "version" : "__REPLACE_VERSION__"
    }
  2. Edit the information inside the template (i.e. change "__REPLACE_ACTIVE__" to "true") to correspond with the node you want to create then save it as a .json file.
  3. Once the .json file is created and edited to suite then you run this command to create the new node: ./node_admin.pl act=create node=newnode file=newnode.json (replace "newnode" with a node name of your choice)
  4. If the node was created successfully you should see a confirmation message saying, "Succesfully created node newnode.". To ensure the node was added you can go to the NMIS GUI and view it there as well.

Node Renaming

To rename nodes you should use act=rename which requires both old and new node names with arguments old and new, respectively. This operation first changes the node name (which is the primary name the node is known to and displayed by NMIS, and which is NOT necessarily the hostname or ip address of the node), and then adjusts all files related to the node in question:

  • all RRD database files are renamed,
  • and the node-related state files in /usr/local/nmis8/var are also renamed.

Deleting Nodes

To remove a node (but not its historic data) simply run node_admin with the argument act=delete node=ripnode, plus the option confirm=YES (must be uppercase) to make node_admin actually perform the deletion.

This removes only the node configuration record but not RRD database files or state files in var. To delete these as well, you can add the option deletedata=1 to the command, and all data related to this node will be removed permanently.

./node_admin.pl act=delete node=ripnode confirm=YES deletedata=1
Successfully deleted ripnode

Node Properties

NMIS uses a subset of the node properties of the commercial Opmantek tools. node_admin.pl act=mktemplate includes a very brief listing of the most essential ones from NMIS' perspective, and the Common Node Properties wiki page describes most of the important ones in greater detail.

NMIS9 Enhancements

The node admin tool in NMIS9 brings some enhancements.

  • The node_admin tool now supports more complete snapshotting of nodes (with act=dump), which optionally includes the node's RRD files, events and other historic records.
    When importing a thusly dumped node with act=import it is now possible to have all identifiers localised to the current system (with localise_ids=true ); this causes the imported node to be  'adopted' by and become active on the current NMIS system immediately. 
    This mechanism allows a node to be moved completely between NMIS systems, without losing any of the node's history.

Dumping a Node

Exporting and Importing Nodes



  • No labels