Search Results for

    Show / Hide Table of Contents

    RPS Software Design

    Last updated on January 13, 2021.

    Last Reviewed and Approved on PENDING REVIEW

    Introduction

    The Rapid Provisioning System (RPS) is designed to provide a mobile, modular, and extensible framework that allows coded automation activities to be executed across a wide area network environment with limited connectivity and bandwidth. This solution was designed to survive the inherent constraints and challenges that have been observed within a mobile tactical network. RPS is designed to be a flexible solution for programs with similar constraints and automation requirements. This document will outline the technology, approach, and functionality provided by this solution.

    Basic RPS Definitions

    This section provides the definition for terms that are used throughout this document. Refer to this section for how these terms are being used within the RPS system.

    Term Definition
    Cmdlet A lightweight command that is used in the Windows PowerShell environment
    Configuration Item (CI) A vehicle that contains entity definitions
    DSC Microsoft’s PowerShell Desired State Configuration software package
    RPS Node A running instance of the RPS system

    Constraints and Challenges of a Tactical Environment

    There are many constraints and challenges inherent to a mobile tactical network:

    • Network capability is limited to modern satellite and line-of-sight (LOS).
    • Vehicles don't always have network connectivity for extended periods of time. This period can range from a few days to several weeks.
    • When a satellite connection is available, vehicles experience extremely high latency combined with extremely low throughput.
    • Line-of-sight (LOS) provides an improvement in the network capabilities of the vehicle but has limited accessibility when vehicles are on the move (OTM).

    • Immediate response capabilities for combat situations:

      • RPS is designed as a combat-ready system to support the warfighter in the field.
        • Service downtime must be schedulable and interruptible.
    • Long lead times to field changes:

      • Time for changes to hardware and software takes years to progress from adoption to operating in a fielded solution.
      • Fielded solutions often have a long lifespan due to costs associated with high cost to upgrade and difficulty implementing changes to the field.
      • The RPS solution will be designed to use the latest commercial off the shelf (COTS) solutions to provide for the longest possible lifespans.

    Design Goals

    The RPS toolset is designed to provide the following functionality to meet the requirements of the tactical Environment:

    • Targeted automation across various device types (routers, switches, radios, servers, etc.).
    • Codependency on automation tasks (To accommodate cross-device requirements and prerequisites).
    • A componentized automation model to simplify development of automation tasks.
    • An extensible toolset to meet automation needs to accommodate environmental variances.
    • Offline automation capabilities, specifically the ability to discretely operate with limited or no connectivity to upper-tier systems.
    • Low-compute capabilities for executing on low resource systems.

    Architectural Overview

    The RPS system is designed to provide the infrastructure upon which various PORs can extend to automate tasks specific to their missions and deployments.

    RPS Functionality

    The common set of functionalities provided by RPS is shown below.

    RPS Software Design Image 1

    1. User interface to manage task assignments and executions – Provides the ability for a user to manage the provisioning process at a granular level. The user can start, halt, and return feedback on provisioning processes for a specific target item.
    2. Coordinated Automation – Provides the ability to automate and coordinate a variety of tasks.
    3. Content Synchronization – Provides the ability to synchronize content across RPS nodes to support the tasks being automated.
    4. Interface to Services & Data – Provides a standard interface to access RPS services through a well-documented API.
    5. Telemetry Services – Provides the ability to collect heuristic information from a system.
    6. IP Spreadsheet Capabilities – Provides the ability to read in the standard TNACC/TNIC provided IP spreadsheet and deliver expected results.

    RPS Components

    Component Core Technology Description Functionality Mapping
    Application Server IIS Provides the capability to host a web application. UI
    Configuration Management DSC Underlying configuration management framework to specify, setup and maintain a desired machine configuration. Coordinated Automation Content Synchronization Interface to Services and Data UI
    Content Delivery BITS, DFSR Underlying content delivery framework to replicate and deliver content across the network. Content Synchronization
    Core Modules C#, PowerShell RPS specific implementation to provide a generic capability to perform task automation. This includes all the RPS runbooks, modules and capabilities that are exposed via the RPS API. Coordinated Automation, Content Synchronization, Interface to Services and Data, Telemetry Services, IP Spreadsheet Capabilities
    Data Persistence PostgreSQL Server Underlying data storage that maintains the metadata needed by the system to manage the task automation. Commonly referred to as RPS CMDB. Coordinated Automation
    Messaging Service C# Underlying messaging framework to provide command and control communication capability between RPS nodes. Content Synchronization
    RPS Web Application .ASP.NET MVC, IIS, jQuery, Knockout, C# RPS specific user interface to allow a user to initiate automated tasks on target systems. UI
    Task Management Service (TMS) Windows Service / RPS Phyr Automated Task Management service used to process RPS Task Assignments. Coordinated Automation
    Note

    Refer to each component’s individual documentation for more details on the internals of each component.

    Data Persistence (CMDB)

    The detailed software design documentation for this component is available at:

    RPS > Documents > Operations > RPS Data Persistence (CMDB) Design.docx

    Automation Framework

    The detailed software design documentation for this component is available at:

    RPS > Documents > Operations > RPS Automations Package Guidelines.docx

    Configuration Management

    The detailed software design documentation for this component is available at:

    RPS > Documents > Operations > RPS Configuration Management (DSC) Design.docx

    Content Delivery

    The detailed software design documentation for this component is available at:

    RPS > Documents > Operations > RPS Content Management.docx

    Messaging Service

    The detailed software design documentation for this component is available at:

    RPS > Documents > Development > RPS Sync Services.docx

    Application Server

    The application server provides the ability to host a web application. RPS uses Microsoft’s IIS web server to provide this capability.

    RPS Web Application

    The detailed software design documentation for this component is available at:

    RPS > Documents > Software > TODO

    Software Development Kit (SDK)

    The RPS SDK provides the developer-oriented documentation for the RPS system. It will include:

    • RPS binary code
    • Sample PowerShell source code runbooks
    • RPS > Documents > Samples
    • API and cmdlet documentation
    • RPS > Documents > Development > RPS API Documentation.PDF

    RPS Server Architecture

    The RPS server architecture is intended to provide scalability for most automation requirements. To accommodate this, each RPS node will be able to either operate on its own or receive instructions from another RPS node. Those instructions will provide operations information to the RPS solution to request executions of automation code, or to manage its own environment.

    Software Requirements

    The RPS infrastructure requires the following software:

    • A Microsoft Windows operating system (Windows Server 2012 R2 or greater)
      • The core operating system version the solution will run on.
    • RPS API
      • Provides the .NET and PowerShell modules necessary to access, manage and maintain a RPS Node.
    • PostgreSQL database
      • Provides the underlying PostgreSQL database support for the custom Configuration Management Database (CMDB)
    • Task Management Service (TMS)
      • RPS Task Management
    • .NET Framework 5
      • Provides enhanced PowerShell frameworks and support for advanced automation.
    • Windows Management Framework (WMF) 5.1
      • Extends PowerShell support to enhance Desired State Configuration functionality.
    • Microsoft Distributed File System Replication services (DFSR).
    • Background Intelligent Transfer Service (BITS)
    • Software for maintaining content distribution over slow, unstable WAN links.
    • RPS Sync Service
      • Provides Windows service to synchronize RPS nodes.

    Server Role Minimum Requirements

    Role CPU Cores Hard Disk (GB) RAM (GB)
    CDN 2 100 (Depends on content) 4
    GUI 2 50 4
    PostgreSQL 2 10 2

    Server Architecture

    It is important to note that the server layout of the RPS components is designed to be fluid based on requirements. This section will outline the software components of the RPS architecture and how they interact, rather than the server architecture of a specific implementation.

    The software components of a given node can be placed on any server layout provided network communications and software prerequisites are available. Each collection of RPS components is identified as a “RPS Node”. These nodes are intended to operate both individually, and in a distributed workload capacity. Node layouts will vary based upon the requirements of a given implementation. For example:

    • Single server RPS node (all software on one system)
    • Multi-server RPS node (each component on its own instance of Windows across multiple servers)

    RPS API - PowerShell Module and Data Access

    The RPS API is a single library to be used in conjunction with the RPS CMDB. The API provides .NET and PowerShell interfaces for managing and manipulating RPS data and actions.

    PowerShell and API Functionality

    Table 2 outlines the available actions the RPS API and PowerShell module offers to support and maintain the RPS environment.

    High Level Actions Purpose
    Managing RPS Infrastructure Data Actions such as registering and managing RPS nodes and their relationships to each other.
    Managing Resource Assignments Manage Assignments between Resource Items and Target Items.
    Managing Resource Items Manage resources, their properties, and metadata.
    Managing Target Items Manage Target Items, properties, their relationship to other items, and other item related metadata.
    Managing Tasks Provides the commands necessary to manage and register tasks.
    Managing Task Assignments Manage Assignments between Tasks/Task Maps and Target Items.
    Managing Task Maps Manage Task Maps and their definitions, what tasks to run, what their dependencies are, filtering criteria, etc.
    Misc. Toolset Functionality Actions such as resets, initiating Task Map evaluations, setting requests for user-interaction, or other functions that may not necessarily directly relate to CMDB data.

    More Resources

    • RPS Data Persistence (CMDB) Software Design
    • RPS Configuration Management (DSC) Software Design
    In This Article
    Back to top Generated by DocFX