tug 
Open-source, cross-platform Pull/Reporting Server for PowerShell DSC

- All Pull Mode protocol messages
have been implemented, including Reporting
- Support for Registration Key Authorization has been implemented
- Several concrete implementations are being made available as pre-built bundles (see below)
Tug is a collection of components that implement the PowerShell DSC Pull Mode protocol and various supporting
behaviors.
Additionally, Tug implements several variations of DSC Pull Servers. Each of these
variations will be packaged up into bundles with a curated set of components and
configurations that work together well for their target use case. See the list of
current and future bundles down below.
For more details about this project, please see the wiki pages.
Pull Server Implementations
In most cases, the intent is for each of the server implementations to be a
drop-in replacement for the Classic Pull Server that ships with WMF v5
(i.e. Pull Server v2). Each of these are implemented using ASP.NET Core 1.x
Because these implementations only target support and compatibility with
DSC Pull Mode protocol v2, this means nodes must implement the ConfigurationName
(not ConfigurationID) style of configuration definitions. (This also means that
they should be compatible with the open source LCM client for Linux.)
Here we present a list of the current set of bundles that are being worked on.
-
Basic:
- a simple, strictly file-based implementation that stores all DSC assets in a
configurable folder structure
- current state - works but not yet bundled up into an easily usable form
- the relatively simple design and implementation details make this a good
example of how to wire up a custom DSC server using the components provided
by Tug for anyone who would like to build their own
-
EFCore:
- builds on the Basic implementation but adds an EF Core back-end to store
much of the state and meta-data for improved performance, efficiency and easy
querying/reporting
- current state - this is still in the design and prototyping stage, so nothing
to show yet
- this will be implemented in a DB-agnostic manner so that you can plug-in SQL
Server, SQLite or whatever flavor of RDBMS you like (maybe even NoSQL when
EF Core eventually implements "non-relational databases")
-
PS5:
- a pull server that is powered by PowerShell v5 -- protocol messagess are
implemented as callbacks to cmdlets that can be overridden/extended by users
- current state - fully working and early access bundle is availble for
installation
and configuration
- includes a default set of cmdlets that implement the same behaviors as the
Basic implemenation
-
PS6:
- a pull server that is powered by PowerShell v6
- the design will mimic that of PS5 but the intention is to make it portable
across any platform that supports hosting PS v6, including Windows Nano and
Linux
- current state - some early work has been started but mostly on hold until
the hosting story for PS6 gets fleshed out
- in theory - once PS v6 is stable this implementation would supplant the
PSv5 variation
-
FaaS: