https://github.com/fornever/fabricator
The sharpest devops tool.
https://github.com/fornever/fabricator
Last synced: about 1 year ago
JSON representation
The sharpest devops tool.
- Host: GitHub
- URL: https://github.com/fornever/fabricator
- Owner: ForNeVeR
- License: mit
- Created: 2020-03-07T13:47:27.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-07-09T21:26:49.000Z (almost 2 years ago)
- Last Synced: 2025-03-30T14:21:34.561Z (about 1 year ago)
- Language: F#
- Size: 42 KB
- Stars: 12
- Watchers: 3
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: Readme.md
- License: License.md
Awesome Lists containing this project
README
Fabricator [![Status Zero][status-zero]][andivionian-status-classifier]
==========
Fabricator is a hackable DevOps platform, similar to
PowerShell [Desired State Configuration][powershell-dsc] in concept (to say,
PowerShell team weren't the first ones to invent the concept, but have chosen
the most descriptive name), and to [Propellor][propellor] in implementation.
Core Concept
------------
With Fabricator, the user describes the desired state of their cluster, and
Fabricator does its best to lead the cluster to this desired state, when asked
to do so.
Fabricator "script" is an ordinary .NET project, where you may use all your
favorite refactoring and code inspection tools; you may wrap or augment
Fabricator calls with your code if you want to.
Fabricator offers a DSL and a set of tasks to configure the cluster, everything
is available via NuGet and easily extendable.
Also, Fabricator is portable across the platforms supported by .NET: both the
control machine and any of the nodes across the cluster may run any supported
operating systems.
Detailed Workflow
-----------------
Whenever the user wants to apply their changes to the cluster, they may, for
each device:
- run the Fabricator-created binary locally on that device (via `dotnet run`, if
.NET SDK is installed, or via other means)
- upload the host-specific Fabricator-created package to a remote host and run
there, providing the runtime for it (if required)
- make Fabricator to upload the binary (essentially cloning itself to a remote
host) and run via the runtime already existing on the host
Usually, .NET SDK should only be available locally, and shouldn't be necessary
on remote.
When Fabricator is started on a remote host, it should be able to identify the
host and required actions. It could do that either by passing command-line
argument to itself, or by reading the hostname (if available).
Developer Documentation
-----------------------
### Prerequisites
Fabricator requires [.NET 5 (or later) SDK][dotnet-sdk] for development.
### Build
To build the project (while automatically restoring the dependencies, if
necessary), execute the following command:
```console
$ dotnet build
```
### Test
To run the automatic test suite, execute the following command:
```console
$ dotnet test
```
### Pack
To pack the artifacts for uploading onto NuGet, execute the following command:
```console
$ dotnet pack
```
[andivionian-status-classifier]: https://github.com/ForNeVeR/andivionian-status-classifier#status-zero-
[dotnet-sdk]: http://dot.net/
[powershell-dsc]: https://docs.microsoft.com/en-us/powershell/scripting/dsc/getting-started/wingettingstarted
[propellor]: http://propellor.branchable.com/
[status-zero]: https://img.shields.io/badge/status-zero-lightgrey.svg