{"id":15683976,"url":"https://github.com/fornever/fabricator","last_synced_at":"2025-04-30T08:20:25.013Z","repository":{"id":47744345,"uuid":"245640708","full_name":"ForNeVeR/Fabricator","owner":"ForNeVeR","description":"The sharpest devops tool.","archived":false,"fork":false,"pushed_at":"2024-07-09T21:26:49.000Z","size":43,"stargazers_count":12,"open_issues_count":11,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T14:21:34.561Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ForNeVeR.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"License.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-07T13:47:27.000Z","updated_at":"2025-02-04T14:50:17.000Z","dependencies_parsed_at":"2022-07-22T02:18:20.576Z","dependency_job_id":null,"html_url":"https://github.com/ForNeVeR/Fabricator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FFabricator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FFabricator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FFabricator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FFabricator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ForNeVeR","download_url":"https://codeload.github.com/ForNeVeR/Fabricator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251666600,"owners_count":21624338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T17:09:23.896Z","updated_at":"2025-04-30T08:20:24.989Z","avatar_url":"https://github.com/ForNeVeR.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Fabricator [![Status Zero][status-zero]][andivionian-status-classifier]\n==========\nFabricator is a hackable DevOps platform, similar to\nPowerShell [Desired State Configuration][powershell-dsc] in concept (to say,\nPowerShell team weren't the first ones to invent the concept, but have chosen\nthe most descriptive name), and to [Propellor][propellor] in implementation.\n\nCore Concept\n------------\nWith Fabricator, the user describes the desired state of their cluster, and\nFabricator does its best to lead the cluster to this desired state, when asked\nto do so.\n\nFabricator \"script\" is an ordinary .NET project, where you may use all your\nfavorite refactoring and code inspection tools; you may wrap or augment\nFabricator calls with your code if you want to.\n\nFabricator offers a DSL and a set of tasks to configure the cluster, everything\nis available via NuGet and easily extendable.\n\nAlso, Fabricator is portable across the platforms supported by .NET: both the\ncontrol machine and any of the nodes across the cluster may run any supported\noperating systems.\n\nDetailed Workflow\n-----------------\nWhenever the user wants to apply their changes to the cluster, they may, for\neach device:\n\n- run the Fabricator-created binary locally on that device (via `dotnet run`, if\n  .NET SDK is installed, or via other means)\n- upload the host-specific Fabricator-created package to a remote host and run\n  there, providing the runtime for it (if required)\n- make Fabricator to upload the binary (essentially cloning itself to a remote\n  host) and run via the runtime already existing on the host\n\nUsually, .NET SDK should only be available locally, and shouldn't be necessary\non remote.\n\nWhen Fabricator is started on a remote host, it should be able to identify the\nhost and required actions. It could do that either by passing command-line\nargument to itself, or by reading the hostname (if available).\n\nDeveloper Documentation\n-----------------------\n\n### Prerequisites\nFabricator requires [.NET 5 (or later) SDK][dotnet-sdk] for development.\n\n### Build\nTo build the project (while automatically restoring the dependencies, if\nnecessary), execute the following command:\n\n```console\n$ dotnet build\n```\n\n### Test\nTo run the automatic test suite, execute the following command:\n\n```console\n$ dotnet test\n```\n\n### Pack\nTo pack the artifacts for uploading onto NuGet, execute the following command:\n\n```console\n$ dotnet pack\n```\n\n[andivionian-status-classifier]: https://github.com/ForNeVeR/andivionian-status-classifier#status-zero-\n[dotnet-sdk]: http://dot.net/\n[powershell-dsc]: https://docs.microsoft.com/en-us/powershell/scripting/dsc/getting-started/wingettingstarted\n[propellor]: http://propellor.branchable.com/\n\n[status-zero]: https://img.shields.io/badge/status-zero-lightgrey.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffornever%2Ffabricator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffornever%2Ffabricator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffornever%2Ffabricator/lists"}