lmos

1Module3Plugins1Dependency

Overview

Description

Ansible collection for Lantronix LMOS (Local Manager OS) devices

Readme

lantronix.lmos, Ansible Collection

Ansible collection for Lantronix LMOS (Local Manager OS) devices, including the Uplogix Local Manager product line. Provides SSH CLI connectivity without requiring ansible_network_terminal_errors: ignore.

Requirements

  • Ansible Core >= 2.16 (see Compatibility Note)
  • ansible.netcommon >= 5.0.0
  • SSH access to LMOS devices on port 22

Installation

From Ansible Automation Hub (recommended)

Install with:

bash ansible-galaxy collection install lantronix.lmos

From GitHub

Clone the repository into the required Ansible collections directory structure. The path ansible_collections/lantronix/lmos/ is required for namespace resolution to work correctly.

mkdir -p ~/ansible_collections/lantronix
git clone https://github.com/Lantronix/ansible-collection-lmos \
    ~/ansible_collections/lantronix/lmos

Install the collection dependency:

ansible-galaxy collection install "ansible.netcommon>=5.0.0"

Add the collections path to your ansible.cfg or set the environment variable:

# ansible.cfg
[defaults]
collections_path = ~/ansible_collections

Or:

export ANSIBLE_COLLECTIONS_PATH=~/ansible_collections:~/.ansible/collections

Inventory Configuration

# inventory.yml
all:
  hosts:
    lm-device-01:
      ansible_host: 192.168.1.100
      ansible_user: admin
      ansible_ssh_pass: "{{ vault_lmos_password }}"
      ansible_port: 22
      ansible_connection: ansible.netcommon.network_cli
      ansible_network_os: lantronix.lmos.lmos
      ansible_become: false

Modules

ModuleDescription
lantronix.lmos.lmos_factsGather structured facts from an LMOS device

Plugins

PluginTypeDescription
lantronix.lmos.lmosterminalHandles LMOS ANSI escape sequences and prompt detection
lantronix.lmos.lmoscliconfCLI command interface for LMOS devices

Usage

Gather facts

- name: Gather LMOS device facts
  hosts: all
  gather_facts: false

  tasks:
    - lantronix.lmos.lmos_facts:

    - ansible.builtin.debug:
        msg: "{{ inventory_hostname }} is running LMOS {{ ansible_facts.lmos_facts.lmos_version }}"

Returns:

FactDescriptionExample
lmos_versionLMOS software version6.8.0.45000
lmos_buildBuild date/timestamp20250101:120000
modelHardware modelLM4
serial_numberDevice serial numberA810100093
fips_modeFIPS mode statusdisabled
uptimeDevice uptime string22h 43m
last_bootLast boot timestamp06/01/25-09:00:00
hostnameManagement hostnamecore-lm-01
management_ipManagement IP address192.168.1.100

Run show commands

- name: Run show commands on LMOS devices
  hosts: all
  gather_facts: false

  tasks:
    - name: Get system IP configuration
      ansible.netcommon.cli_command:
        command: "show system ip\r\n"
      register: result

    - ansible.builtin.debug:
        var: result.stdout_lines

IQOQ Validation

The included reference playbook implements a full IQOQ (Installation/Operational Qualification) run for compliance validation. It checks LMOS version, authentication, UCC management server, NTP, and syslog configuration.

ansible-playbook -i inventory.yml playbooks/iqoq_validate.yml \
  -e "expected_lmos_version=6.7" \
  -e "expected_ucc_host=uplogix-control-center.example.com" \
  -e "expected_ntp_server=ntp.example.com" \
  -e "expected_syslog_server=192.168.1.50"

All variables have safe defaults (empty string = skip that assertion). See playbooks/iqoq_validate.yml for the full parameter list.

Background

LMOS emits ANSI escape sequences (\x1b[0m) at the end of every CLI output line. Without the custom terminal plugin in this collection, Ansible's standard networking plugins fail to detect the command prompt, causing connections to hang. The common workaround, ansible_network_terminal_errors: ignore, suppresses errors that may be real failures.

This collection fixes the problem cleanly. The lantronix.lmos.lmos terminal plugin extends TerminalBase.ansi_re to strip the ANSI reset sequence before prompt detection. No error suppression required.

Compatibility Note

ansible.netcommon through version 8.5.3 calls ActionBase._parse_returned_data() with the pre-2.20 signature, which raises a TypeError at runtime under ansible-core 2.20. Until ansible.netcommon ships a fix, use ansible-core 2.19.x.

Tested against: ansible-core 2.16+ through 2.19.x, ansible.netcommon 8.5.3, Python 3.12.

Support

This collection is maintained by the Lantronix OOB product team.

Red Hat Automation Hub users: Open a support request via the collection page on Automation Hub using the "Create issue" link. This ensures your request is routed through the appropriate Red Hat support channels.

Community support: Open an issue on GitHub. Pull requests are welcome, please open an issue before submitting a PR for significant changes.

Product support: Visit https://www.lantronix.com/support/.

Changelog

See CHANGELOG.rst for a list of changes in each release.

License

Apache-2.0. See LICENSE.

Plugin and module files are licensed under GPL-3.0-or-later per Ansible module standards.

Certification

Product
2.6
2.7
DocumentationDependencies

Dependencies

1

This collection requires the following collections for use:

Dependent Collections

This collection is not being used by other collections.

View in Automation Hub
Red Hat logoLinkedInYouTubeFacebookTwitter

Platforms

Products & services

Try, buy, sell

Help

About Red Hat Ecosystem Catalog

The Red Hat Ecosystem Catalog is the official source for discovering and learning more about the Red Hat Ecosystem of both Red Hat and certified third-party products and services.

We’re the world’s leading provider of enterprise open source solutions—including Linux, cloud, container, and Kubernetes. We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2026 Red Hat, LLC
Feedback