- AnsibleFest
- Products
- Community
- Webinars & Training
- Blog

Documentation

# nclu – Configure network interfaces using NCLU

- Synopsis

- Parameters

- Examples

- Return Values

- Status

## Synopsis

- Interface to the Network Command Line Utility, developed to make it easier to configure operating systems running ifupdown2 and Quagga, such as Cumulus Linux. Command documentation is available at https://docs.cumulusnetworks.com/cumulus-linux/System-Configuration/Network-Command-Line-Utility-NCLU/

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
abort boolean | Choices: no ← yes | Boolean. When true, perform a 'net abort' before the block. This cleans out any uncommitted changes in the buffer. Mutually exclusive with atomic.
atomic boolean | Choices: no ← yes | When true, equivalent to both commit and abort being true. Mutually exclusive with commit and atomic.
commands - |  | A list of strings containing the net commands to run. Mutually exclusive with template.
commit boolean | Choices: no ← yes | When true, performs a 'net commit' at the end of the block. Mutually exclusive with atomic.
description - | Default: "Ansible-originated commit" | Commit description that will be recorded to the commit log if commit or atomic are true.
template - |  | A single, multi-line string with jinja2 formatting. This string will be broken by lines, and each line will be run through net. Mutually exclusive with commands.

## Examples

    - name: Add two interfaces without committing any changes
      nclu:
        commands:
            - add int swp1
            - add int swp2

    - name: Modify hostname to Cumulus-1 and commit the change
      nclu:
        commands:
            - add hostname Cumulus-1
        commit: true

    - name: Add 48 interfaces and commit the change.
      nclu:
        template: |
            {% for iface in range(1,49) %}
            add int swp{{iface}}
            {% endfor %}
        commit: true
        description: "Ansible - add swps1-48"

    - name: Fetch Status Of Interface
      nclu:
        commands:
            - show interface swp1
      register: output

    - name: Print Status Of Interface
      debug:
        var: output

    - name: Fetch Details From All Interfaces In JSON Format
      nclu:
        commands:
            - show interface json
      register: output

    - name: Print Interface Details
      debug:
        var: output["msg"]

    - name: Atomically add an interface
      nclu:
        commands:
            - add int swp1
        atomic: true
        description: "Ansible - add swp1"

    - name: Remove IP address from interface swp1
      nclu:
        commands:
            - del int swp1 ip address 1.1.1.1/24

    - name: Configure BGP AS and add 2 EBGP neighbors using BGP Unnumbered
      nclu:
        commands:
            - add bgp autonomous-system 65000
            - add bgp neighbor swp51 interface remote-as external
            - add bgp neighbor swp52 interface remote-as external
        commit: true

    - name: Configure BGP AS and Add 2 EBGP neighbors Using BGP Unnumbered via Template
      nclu:
        template: |
          {% for neighbor in range(51,53) %}
          add bgp neighbor swp{{neighbor}} interface remote-as external
          add bgp autonomous-system 65000
          {% endfor %}
        atomic: true

    - name: Check BGP Status
      nclu:
        commands:
            - show bgp summary json
      register: output

    - name: Print BGP Status In JSON
      debug:
        var: output["msg"]

## Return Values

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

Key | Returned | Description
--- | --- | ---
changed boolean | changed | whether the interface was changed Sample: True
msg string | always | human-readable report of success or failure Sample: interface bond0 config updated

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Community. [community]

### Authors

- Cumulus Networks (@isharacomix)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.