ninjarobot/FsCloudInit
63.2
Adequate · 3 October 2026
681
lines of production code
F#
primary language
2
measurements over time
What this system is
FsCloudInit is an F\# library that generates cloud-init configuration files for infrastructure provisioning. It provides a builder-based API to define directives such as package installation, file management, repository setup, and user configuration, serializing them into valid YAML. The system is designed to integrate with tools like Farmer for deploying virtual machines, as demonstrated by included examples for Azure VM setup.
Features
Expanded cloud-init configuration support with builders and new modules
FsCloudInit now supports a broader range of cloud-init directives, including Yum repository configuration, file permissions, deferred file writes, gzip-compressed content, and snap commands. New F\# builder syntax (WriteFileBuilder, AptSourceBuilder, YumRepoBuilder) simplifies constructing these configurations, while the underlying data models have been updated to include fields like Permissions, Append, Defer, and GzipBase64 encoding. The serialization logic has also been adjusted to serialize the ConfigModel property directly.
FsCloudInit · high confidence
New notebook demonstrating VM provisioning with Farmer and FsCloudInit
Added a new interactive notebook that demonstrates how to use the Farmer and FsCloudInit libraries to define and deploy an Azure Virtual Machine. The notebook includes a complete example of configuring cloud-init to install the .NET SDK, deploy an ASP.NET Core MVC application via a bootstrap script, and manage the app as a systemd service.
notebooks · high confidence
Test coverage
Expanded test coverage for cloud-init configuration generation
Added comprehensive tests for the FsCloudInit library's configuration generation capabilities, including package installation (with specific versions), file embedding (plain, gzipped, and with permissions/defer), APT and YUM repository setup, hostname configuration, final messages, power state management, command execution, and user creation. The test suite now validates generated YAML against expected files and includes cross-architecture fixes for gzip handling.
FsCloudInitTests · high confidence
Dependencies
Library targets .NET Standard 2.0 with updated dependencies and NuGet metadata
The FsCloudInit library has changed its target framework from .NET 5.0 to .NET Standard 2.0, allowing it to run on a wider range of .NET implementations. This change is accompanied by an update to YamlDotNet from version 9.1.4 to 12.0.0 and the explicit pinning of FSharp.Core to version 5.0.0. Additionally, the NuGet package metadata has been enriched with author, copyright, description, and repository details, and the package now includes the LICENSE and README.md files. The test project has been upgraded to .NET 10.0, with Expecto updated to 10.2.3, YoloDev.Expecto.TestSdk to 0.15.5, and Microsoft.NET.Test.Sdk to 18.0.1.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 64 → 63 (-0.4)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 90 → 92 (+1.8)
- Maturity 55 → 55 (+0.0)
- Readiness 55 → 55 (+0.0)
- Security 81 → 77 (-3.9)
Resolved (1)
- Documentation: no usage examples (README.md)
New (1)
- Documentation: no installation or build instructions (README.md)
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- (root) — 1 commit
Notable commits
- change: Use latestFeature for SDK resolution (#17)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ninjarobot/FsCloudInit was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a3661681ac4e74266b1728890d7b399e7dc85370 — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.