App::Netdisco::Worker::Plugin - Netdisco Workers
App::Netdisco's plugin system allows users to write workers to gather information from network devices using different transports and store results in the database.
For example, transports might be SNMP, SSH, or HTTPS. Workers might be combining those transports with application protocols such as SNMP, NETCONF (OpenConfig with XML), RESTCONF (OpenConfig with JSON), eAPI, or even CLI scraping. The combination of transport and protocol is known as a driver.
Workers can be restricted to certain vendor platforms using familiar ACL syntax. They are also attached to specific phases in Netdisco's backend operation (discover, macsuck, etc).
The worker_plugins and extra_worker_plugins settings list in YAML format the set of Perl module names which are the plugins to be loaded.
worker_plugins
extra_worker_plugins
Any change should go into your local deployment.yml configuration file. If you want to view the default settings, see the share/config.yml file in the App::Netdisco distribution.
deployment.yml
share/config.yml
App::Netdisco
The extra_worker_plugins setting is empty, and used only if you want to add new plugins but not change the set enabled by default. If you do want to add to or remove from the default set, then create a version of worker_plugins instead.
Netdisco prepends "App::Netdisco::Worker::Plugin::" to any entry in the list. For example, "Discover::Wireless::UniFi" will load the App::Netdisco::Worker::Plugin::Discover::Wireless::UniFi package.
App::Netdisco::Worker::Plugin::
Discover::Wireless::UniFi
App::Netdisco::Worker::Plugin::Discover::Wireless::UniFi
You can prepend module names with "X::" as shorthand for the "Netdisco extension" namespace. For example, "X::Macsuck::WirelessNodes::UniFi" will load the App::NetdiscoX::Worker::Plugin::Macsuck::WirelessNodes::UniFi module.
X::
X::Macsuck::WirelessNodes::UniFi
If an entry in the list starts with a "+" (plus) sign then Netdisco attemps to load the module as-is, without prepending anything to the name. This allows you to have App::Netdisco Worker plugins in other namespaces.
+
Plugin modules can either ship with the App::Netdisco distribution itself, or be installed separately. Perl uses the standard @INC path searching mechanism to load the plugin modules. See the include_paths and site_local_files settings in order to modify @INC for loading local plugins. As an example, if your plugin is called "App::NetdiscoX::Worker::Plugin::MyPluginName" then it could live at:
@INC
include_paths
site_local_files
~netdisco/nd-site-local/lib/App/NetdiscoX/Worker/Plugin/MyPluginName.pm
The order of the entries is significant, workers being executed in the order which they appear in worker_plugins and extra_worker_plugins (although see App::Netdisco::Manual::WritingWorkers for caveats).
To install App::Netdisco, copy and paste the appropriate command in to your terminal.
cpanm
cpanm App::Netdisco
CPAN shell
perl -MCPAN -e shell install App::Netdisco
For more information on module installation, please visit the detailed CPAN module installation guide.