lookup¶
Collection Note
This module is part of the networktocode.nautobot collection. To install the collection, use:
You need further requirements to be able to use this module, see the Requirements section for details.Synopsis¶
- Queries Nautobot via its API to return virtually any information capable of being held in Nautobot.
Requirements¶
The following Python packages are needed on the host that executes this module:
Parameters¶
Parameter | Data Type | Environment Variable | Comments |
---|---|---|---|
_terms required |
The Nautobot object type to query | ||
api_endpoint required |
NAUTOBOT_URL | The URL to the Nautobot instance to query | |
api_filter | The api_filter to use. | ||
api_version | The Nautobot Rest API version to use. Version Added: 4.1.0 |
||
num_retries | Number of retries This will only affect HTTP codes 429, 500, 502, 503, and 504. | ||
plugin | The Nautobot plugin to query | ||
raw_data | Whether to return raw API data with the lookup/query or whether to return a key/value dict | ||
token | NAUTOBOT_TOKEN | The API token created through Nautobot This may not be required depending on the Nautobot setup. | |
validate_certs | Whether or not to validate SSL of the Nautobot instance |
Examples¶
tasks:
# query a list of devices
- name: Obtain list of devices from Nautobot
debug:
msg: >
"Device {{ item.value.display_name }} (ID: {{ item.key }}) was
manufactured by {{ item.value.device_type.manufacturer.name }}"
loop: "{{ query('networktocode.nautobot.lookup', 'devices',
api_endpoint='http://localhost/',
api_version='2.0',
token='<redacted>') }}"
# This example uses an API Filter
tasks:
# query a list of devices
- name: Obtain list of devices from Nautobot
debug:
msg: >
"Device {{ item.value.display_name }} (ID: {{ item.key }}) was
manufactured by {{ item.value.device_type.manufacturer.name }}"
loop: "{{ query('networktocode.nautobot.lookup', 'devices',
api_endpoint='http://localhost/',
api_version='2.0',
api_filter='role=management tags=Dell',
token='<redacted>') }}"
# This example uses an API Filter with Depth set to get additional details from the lookup
tasks:
# query a list of devices, getting API Depth of 1 to get additional details
# Note the space and the use of depth. Note the location_name is set to the name of the location
- name: "Obtain Location Information from Nautobot and print some facts."
ansible.builtin.debug:
msg: >
"Location {{ item.value.name }} is {{ item.value['status']['name'] }} and has {{ item.value.prefix_count }} Prefixes and {{ item.value.vlan_count }} VLANs."
loop: "{{ query('networktocode.nautobot.lookup', 'locations',
url=NAUTOBOT_URL,
token=NAUTOBOT_TOKEN,
api_filter='name=' + location_name + ' depth=1',
) }}"
# Fetch bgp sessions for R1-device
tasks:
- name: "Obtain bgp sessions for R1-Device"
debug:
msg: "{{ query('networktocode.nautobot.lookup', 'bgp_sessions',
api_filter='device=R1-Device',
api_endpoint='http://localhost/',
api_version='2.0',
token='<redacted>',
plugin='mycustomstuff') }}"
Return Values¶
Key | Data Type | Description | Returned |
---|---|---|---|
_list | list | list of composed dictionaries with key and value |
Authors¶
- Chris Mills (@cpmills1975)