- Go 97.9%
- Yacc 0.8%
- JavaScript 0.3%
- Roff 0.3%
- Shell 0.2%
- Other 0.3%
Allow optional per-jail extra fstab lines and auto-create mountpoint directories under the jail ROOT. Made-with: Cursor |
||
|---|---|---|
| cmd | ||
| core | ||
| docs | ||
| examples | ||
| internal/config | ||
| lang | ||
| resources/freebsd | ||
| runtime/deploytarget | ||
| vendor | ||
| .gitignore | ||
| AGENTS.md | ||
| build.sh | ||
| COPYING | ||
| go.mod | ||
| go.sum | ||
| PLAN.md | ||
| README.md | ||
grctl
grctl is a graph-based configuration automation tool built on selected core components of the mgmt project.
It focuses on a simplified runtime and a FreeBSD-first environment while reusing the powerful graph engine and MCL language from mgmt.
Goals
- Reuse the mgmt engine, lang, and pgraph components
- Provide a simplified runtime
- Focus on FreeBSD systems
- Use MCL (Mgmt Configuration Language) as the configuration language
- Avoid unnecessary complexity such as embedded etcd
Non-Goals
- Linux feature parity
- Embedded etcd cluster management
- DHCP / BOOTP services
- Puppet compatibility
- YAML graph definitions
Example
grctl apply system.mcl
Example MCL:
file "/etc/motd" { content = "Managed by grctl\n" }
Disclaimer
Work in Progress — Use at Your Own Risk
This project is under active development and should be considered unstable. Breaking changes may occur between any two versions without prior notice or a migration path. Configuration files, CLI flags, and internal APIs are all subject to change at any time.
Use in production environments is strongly discouraged. The authors assume no responsibility for data loss, system misconfiguration, or any other damage caused by the use of this software. You use grctl entirely at your own risk.
Credits
Special thanks to James Shubin and the entire mgmt team and contributors for their outstanding work on the mgmt project, which provides the core components that this tool is built upon.
License
GPLv3
TODO: FreeBSD Resources
The following resources from mgmt have not yet been converted for FreeBSD:
| Resource | Notes |
|---|---|
| augeas | Linux-focused configuration editing |
| aws_ec2 | Cloud integration |
| bmc | BMC/IPMI management |
| consul_kv | Consul key-value store |
| cron | Cron job management |
| deploy_tar | Tar deployment |
| dhcp | DHCP server |
| firewalld | Linux firewall |
| fwattr | Firewall attributes |
| gsettings | GNOME settings |
| gzip | Gzip compression |
| hetzner_vm | Hetzner cloud VMs |
| http | HTTP client |
| http_server | HTTP server |
| line | Line in file |
| mount | Mount management |
| nspawn | Linux containers |
| panic | Panic resource |
| pippet | Pipelines |
| Print output | |
| schedule | Scheduling |
| ssh_authorized_key | SSH keys |
| sysctl | Sysctl management |
| tar | Tar archives |
| test | Testing resource |
| tftp | TFTP server |
| value | Value resource |
| virt | Virtualization |
Implemented FreeBSD resources: exec, file, group, hostname, jail, jail_ready, kv, msg, net, noop, password, pkg, pkg_uid, route, svc, sysrc, timer, user, zfs, zpool