networktocode.nautobot.query_graphql module – Queries and returns elements from Nautobot GraphQL endpoint

Note

This module is part of the networktocode.nautobot collection (version 5.3.1).

It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install networktocode.nautobot. You need further requirements to be able to use this module, see Requirements for details.

To use it in a playbook, specify: networktocode.nautobot.query_graphql.

New in networktocode.nautobot 1.1.0

Synopsis

  • Queries Nautobot via its GraphQL API through pynautobot

Note

This module has a corresponding action plugin.

Requirements

The below requirements are needed on the host that executes this module.

  • pynautobot

Parameters

Parameter

Comments

api_version

API Version Nautobot REST API

graph_variables

query

The GraphQL formatted query string, see (https://pynautobot.readthedocs.io/en/latest/advanced/graphql.html) for more details.

token

The API token created through Nautobot, optional env=NAUTOBOT_TOKEN

update_hostvars

Whether or not to populate data in the in the root (e.g. hostvars[inventory_hostname]) or within the ‘data’ key (e.g. hostvars[inventory_hostname][‘data’]). Beware, that the root keys provided by the query will overwrite any root keys already present, leverage the GraphQL alias feature to avoid issues.

:ansible-option-choices:`Choices:`

url

The URL to the Nautobot instance to query (http://nautobot.example.com:8000), optional env=NAUTOBOT_URL

validate_certs

Examples

# Make API Query without variables
- name: SET FACT OF STRING
  set_fact:
    query_string: |
      query {
        locations {
          id
          name
          parent {
            name
          }
        }
      }

# Make query to GraphQL Endpoint
- name: Obtain list of locations from Nautobot
  networktocode.nautobot.query_graphql:
    url: http://nautobot.local
    token: thisIsMyToken
    query: "{{ query_string }}"


# Example with variables
- name: SET FACTS TO SEND TO GRAPHQL ENDPOINT
  set_fact:
    graph_variables:
      $location_name: AMS01
    query_string: |
      query ($location_name: String!) {
        locations (name: $location_name) {
          id
          name
          parent {
              name
          }
        }
      }

# Get Response with variables and set to root keys
- name: Obtain list of devices at location in variables from Nautobot
  networktocode.nautobot.query_graphql:
    url: http://nautobot.local
    token: thisIsMyToken
    query: "{{ query_string }}"
    graph_variables: "{{ graph_variables }}"
    update_hostvars: yes

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

data

Data result from the GraphQL endpoint

:ansible-option-returned-bold:`Returned:` success

graph_variables

Variables passed in

:ansible-option-returned-bold:`Returned:` success

query

Query string that was sent to Nautobot

:ansible-option-returned-bold:`Returned:` success

url

Nautobot URL that was supplied for troubleshooting

:ansible-option-returned-bold:`Returned:` success

Authors

  • Josh VanDeraa (@jvanderaa)