networktocode.nautobot.inventory inventory – Nautobot inventory source
Note
This inventory plugin is part of the networktocode.nautobot collection (version 5.0.1).
To install it, use: ansible-galaxy collection install networktocode.nautobot
.
To use it in a playbook, specify: networktocode.nautobot.inventory
.
Synopsis
Get inventory hosts from Nautobot
Parameters
Parameter |
Comments |
---|---|
If True, sets DNS Name (fetched from primary_ip) to be used in ansible_host variable, instead of IP Address. Choices: |
|
Endpoint of the Nautobot API Configuration:
|
|
The version of the Nautobot REST API. |
|
Toggle to enable/disable the caching of the inventory’s source data, requires a cache plugin setup to work. Choices: Configuration:
|
|
Cache connection data or path, read cache plugin documentation for specifics. Configuration:
|
|
Cache plugin to use for the inventory’s source data. Default: :ansible-option-default:`"memory"` Configuration:
|
|
Prefix to use for cache plugin files/tables Default: :ansible-option-default:`"ansible\_inventory\_"` Configuration:
|
|
Cache duration in seconds Default: :ansible-option-default:`3600` Configuration:
|
|
List of custom ansible host vars to create from the device object fetched from Nautobot Default: :ansible-option-default:`{}` |
|
If True, it adds config_context in host vars. Config-context enables the association of arbitrary data to devices and virtual machines grouped by location, role, platform, and/or tenant. Please check official nautobot docs for more info. Choices: |
|
List of parameters passed to the query string for devices (Multiple values may be separated by commas) Default: :ansible-option-default:`[]` |
|
Force IP Addresses to be fetched so that the dns_name for the primary_ip of each device or VM is set as a host_var. Setting interfaces will also fetch IP addresses and the dns_name host_var will be set. Choices: |
|
By default, fetching interfaces and services will get all of the contents of Nautobot regardless of query_filters applied to devices and VMs. When set to False, separate requests will be made fetching interfaces, services, and IP addresses for each device_id and virtual_machine_id. If you are using the various query_filters options to reduce the number of devices, querying Nautobot may be faster with fetch_all False. For efficiency, when False, these requests will be batched, for example /api/dcim/interfaces?limit=0&device_id=1&device_id=2&device_id=3 These GET request URIs can become quite large for a large number of devices. If you run into HTTP 414 errors, you can adjust the max_uri_length option to suit your web server. Choices: |
|
If config_context is enabled, by default it’s added as a host var named config_context. If flatten_config_context is set to True, the config context variables will be added directly to the host instead. Choices: |
|
By default, host custom fields are added as a dictionary host var named custom_fields. If flatten_custom_fields is set to True, the fields will be added directly to the host instead. Choices: |
|
If local_context_data is enabled, by default it’s added as a host var named local_context_data. If flatten_local_context_data is set to True, the config context variables will be added directly to the host instead. Choices: |
|
Determine how redirects are followed. By default, follow_redirects is set to uses urllib2 default behavior. Choices: |
|
Keys used to create groups. The plurals option controls which of these are valid. Choices: Default: :ansible-option-default:`[]` |
|
Will not add the group_by choice name to the group names Choices: |
|
Add hosts to group based on Jinja2 conditionals. Default: :ansible-option-default:`{}` |
|
If True, it adds the device or virtual machine interface information in host vars. Choices: |
|
Add hosts to group based on the values of a variable. Default: :ansible-option-default:`[]` |
|
The default value when the host variable’s value is an empty string. This option is mutually exclusive with |
|
The key from input dictionary used to generate groups |
|
parent group for keyed group |
|
A keyed group name will start with this prefix Default: :ansible-option-default:`""` |
|
separator used to build the keyed group name Default: :ansible-option-default:`"\_"` |
|
Set this option to False to omit the This option is mutually exclusive with Choices: |
|
Use in conjunction with keyed_groups. By default, a keyed group that does not have a prefix or a separator provided will have a name that starts with an underscore. This is because the default prefix is “” and the default separator is “_”. Set this option to False to omit the leading underscore (or other separator) if no prefix is given. If the group name is derived from a mapping the separator is still used to concatenate the items. To not use a separator in the group name at all, set the separator for the keyed group to an empty string instead. Choices: |
|
When fetch_all is False, GET requests to Nautobot may become quite long and return a HTTP 414 (URI Too Long). You can adjust this option to be smaller to avoid 414 errors, or larger for a reduced number of requests. Default: :ansible-option-default:`4000` |
|
token that ensures this is a source file for the ‘nautobot’ plugin. Choices: |
|
If True, all host vars are contained inside single-element arrays for legacy compatibility with old versions of this plugin. Group names will be plural (ie. “locations_mylocation” instead of “location_mylocation”) The choices of group_by will be changed by this option. Choices: |
|
List of parameters passed to the query string for both devices and VMs (Multiple values may be separated by commas) Default: :ansible-option-default:`[]` |
|
If True, it adds the device or virtual machine services information in host vars. Choices: |
|
If Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default. Choices: |
|
Timeout for Nautobot requests in seconds Default: :ansible-option-default:`60` |
|
Nautobot API token to be able to read against Nautobot. This may not be required depending on the Nautobot setup. Configuration:
|
|
Merge extra vars into the available variables for composition (highest precedence). Choices: Configuration:
|
|
Allows connection when SSL certificates are not valid. Set to Choices: |
|
When a device is part of a virtual chassis, use the virtual chassis name as the Ansible inventory hostname. The host var values will be from the virtual chassis master. Choices: |
|
List of parameters passed to the query string for VMs (Multiple values may be separated by commas) Default: :ansible-option-default:`[]` |
Examples
# inventory.yml file in YAML format
# Example command line: ansible-inventory -v --list -i inventory.yml
plugin: networktocode.nautobot.inventory
api_endpoint: http://localhost:8000
validate_certs: True
config_context: False
group_by:
- device_roles
query_filters:
- role: network-edge-router
device_query_filters:
- has_primary_ip: 'true'
# has_primary_ip is a useful way to filter out patch panels and other passive devices
# Query filters are passed directly as an argument to the fetching queries.
# You can repeat tags in the query string.
query_filters:
- role: server
- tag: web
- tag: production
# See the Nautobot documentation at https://nautobot.readthedocs.io/en/latest/api/overview/
# the query_filters work as a logical **OR**
#
# Prefix any custom fields with cf_ and pass the field value with the regular Nautobot query string
query_filters:
- cf_foo: bar
# Nautobot inventory plugin also supports Constructable semantics
# You can fill your hosts vars using the compose option:
plugin: networktocode.nautobot.inventory
compose:
foo: last_updated
bar: display
nested_variable: rack.display
# You can use keyed_groups to group on properties of devices or VMs.
# NOTE: It's only possible to key off direct items on the device/VM objects.
plugin: networktocode.nautobot.inventory
keyed_groups:
- prefix: status
key: status.value