Getting started

FRINX Machine is a dockerized deployment of multiple elements. Each one of them has specific responsibilities. FRINX Machine is a solution that enables automation of network elements and services and the retrieval of specific operational data from the network. It does so by introducing user defined workflows in addition network device models based on OpenConfig and vendor models via NETCONF/YANG and CLI commands. FRINX Machine consists of a number of dockerized components that are configured and tested to work together to build a solution.

For installation, please refer to: FRINX Machine repository

FRINX Machine components

FRINX UniConfig

  • Connects to the devices in network

  • Retrieves and stores configuration from devices

  • Pushes configuration data to devices

  • Builds diffs between actual and intended config to execute atomic configuration changes

  • Retrieves operational data from devices

  • Manages transactions across one or multiple devices

  • Translates between CLI and private model and standard data models (OpenConfig)

  • Reads and stores private data models from network devices (any YANG model)

  • Provides high availability

  • Provides parallel command execution on devices

Netflix Conductor (workflow engine)

  • Chains atomic tasks into complex workflows

  • Defines, executes and monitors workflows (via REST or UI)

We chose Netflix’s conductor workflow engine since it has been proven to be highly scalable open-source technology that integrates very well with FRINX UniConfig. Further information about conductor can be found at:

Elasticsearch (inventory and logs)

  • Stores inventory data

  • Stores workflow execution and meta data

  • Stores UniConfig logs

UniConfig UI (user interface)

  • This is the primary user interface for FRINX Machine

  • Enables users to create, edit and run workflows and monitor tasks

  • Enables users to mount and view device statuses. Provides access to UniConfig operations like read, edit, commit configurations and sync it from network.

  • View inventory, workflow execution, metadata and UniConfig log files

High Level Architecture

Following diagram outlines main functional components in the FRINX Machine solution:

../../_images/components.png

FRINX Machine repository is available at https://github.com/FRINXio/FRINX-machine

Frinx-conductor repository is available at https://github.com/FRINXio/frinx-conductor

Specialized UniConfig tasks are available at https://github.com/FRINXio/FRINX-machine/tree/master/microservices/netinfra_utils

Defining a workflow

Workflows are defined using a JSON based domain specific language (DSL) by wiring a set of tasks together. The tasks are either control tasks (fork, conditional etc) or application tasks (e.g. encode a file) that are executed on a remote machine.

FRINX Machine distribution comes in with number of pre-packaged workflows.

Detailed description of workflow and task definitions along with examples can be found at official Netflix Conductor documentation