Skip to content

device_interface

Collection Note

This module is part of the networktocode.nautobot collection. To install the collection, use:

ansible-galaxy collection install networktocode.nautobot
Added in version 1.0.0.

You need further requirements to be able to use this module, see the Requirements section for details.

Synopsis

  • Creates or removes interfaces from Nautobot

Requirements

The following Python packages are needed on the host that executes this module:

Parameters

Parameter Defaults / Choices Comments
api_version
str
API Version Nautobot REST API
Version Added: 4.1.0
bridge
raw
Interface that will be the bridge of the interface being created
Version Added: 4.5.0
custom_fields
dict
Must exist in Nautobot and in key/value format
Version Added: 3.0.0
description
str
The description of the interface
Version Added: 3.0.0
device
raw
Name of the device the interface will be associated with (case-sensitive)
Requires one of I(device) or I(module) when I(state=present) and the interface does not exist yet
Version Added: 3.0.0
enabled
bool
Sets whether interface shows enabled or disabled
Version Added: 3.0.0
id
str
The UUID of the object to operate on
Version Added: 5.13.0
label
str
Physical label of the interface
Version Added: 3.0.0
lag
raw
Parent LAG interface will be a member of
Version Added: 3.0.0
mac_address
str
The MAC address of the interface
Version Added: 3.0.0
mgmt_only
bool
This interface is used only for out-of-band management
Version Added: 3.0.0
mode
raw
The mode of the interface
Version Added: 3.0.0
module
raw
The attached module
Requires one of I(device) or I(module) when I(state=present) and the interface does not exist yet
Version Added: 5.4.0
mtu
int
The MTU of the interface
Version Added: 3.0.0
name
str
Name of the interface to be created
Required if I(state=present) and the interface does not exist yet
Version Added: 3.0.0
parent_interface
raw
Interface that will be the parent of the interface being created
Version Added: 4.5.0
query_params
list / elements=str
This can be used to override the specified values in ALLOWED_QUERY_PARAMS that is defined
in plugins/module_utils/utils.py and provides control to users on what may make
an object unique in their environment.
Version Added: 3.0.0
role
raw
The role of the interface
Version Added: 5.4.0
state
str
Default: present
Choices: absent, present
Use C(present) or C(absent) for adding or removing.
status
raw
The status of the interface
Required if I(state=present) and the interface does not exist yet
Version Added: 4.5.0
tagged_vlans
raw
A list of tagged VLANS to be assigned to interface. Mode must be set to either C(Tagged) or C(Tagged All)
Version Added: 3.0.0
tags
list / elements=raw
Any tags that this item may need to be associated with
Version Added: 3.0.0
token
str
required
The token created within Nautobot to authorize API access
Can be omitted if the E(NAUTOBOT_TOKEN) environment variable is configured.
type
str
Form factor of the interface: ex. 1000Base-T (1GE), Virtual, 10GBASE-T (10GE) This has to be specified exactly as what is found within UI
Required if I(state=present) and the interface does not exist yet
Version Added: 3.0.0
untagged_vlan
raw
The untagged VLAN to be assigned to interface
Version Added: 3.0.0
update_vc_child
bool
Use when master device is specified for C(device) and the specified interface exists on a child device and needs updated
Version Added: 3.0.0
url
str
required
The URL of the Nautobot instance resolvable by the Ansible host (for example: http://nautobot.example.com:8000)
Can be omitted if the E(NAUTOBOT_URL) environment variable is configured.
validate_certs
raw
Default: True
If C(no), SSL certificates will not be validated. This should only be used on personally controlled sites using self-signed certificates.
Can be omitted if the E(NAUTOBOT_VALIDATE_CERTS) environment variable is configured.
vrf
raw
The VRF associated with the interface
Version Added: 5.12.0

Notes

Note

  • Tags should be defined as a YAML list
  • This should be ran with connection C(local) and hosts C(localhost)

Examples

- name: "Test Nautobot interface module"
  connection: local
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Create interface within Nautobot with only required information
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet1
        state: present
    - name: Delete interface within nautobot
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet1
        state: absent
    - name: Create LAG with several specified options
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: port-channel1
        type: Link Aggregation Group (LAG)
        mtu: 1600
        mgmt_only: false
        mode: Access
        state: present
    - name: Create interface and assign it to parent LAG
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet1
        enabled: false
        type: 1000Base-t (1GE)
        lag:
          name: port-channel1
        mtu: 1600
        mgmt_only: false
        mode: Access
        state: present
    - name: Create interface as a trunk port
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet25
        enabled: false
        role: Loopnetwork
        type: 1000Base-t (1GE)
        untagged_vlan:
          name: Wireless
          location: "{{ location['key'] }}"
        tagged_vlans:
          - name: Data
            location: "{{ location['key'] }}"
          - name: VoIP
            location: "{{ location['key'] }}"
        mtu: 1600
        mgmt_only: true
        mode: Tagged
        state: present
    - name: Update interface on child device on virtual chassis
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet2/0/1
        enabled: false
        update_vc_child: true
    - name: |
        Create an interface and update custom_field data point,
        setting the value to True
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet1/1/1
        enabled: false
        custom_fields:
          monitored: true
    - name: Create child interface
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: GigabitEthernet1/1/1
        type: Virtual
        parent_interface:
          name: GigabitEthernet1/1
    - name: Create bridge interface
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        device: test100
        name: Bridge1
        bridge:
          name: GigabitEthernet1/1
    - name: Delete interface by id
      networktocode.nautobot.device_interface:
        url: http://nautobot.local
        token: thisIsMyToken
        id: 00000000-0000-0000-0000-000000000000
        state: absent

Return Values

Key Data Type Description Returned
interface dict Serialized object as created or already existent within Nautobot on creation
msg str Message indicating failure or info about what has been achieved always

Authors

  • Mikhail Yohman (@fragmentedpacket)