This commit is contained in:
Miguel Jacq 2026-06-17 15:35:26 +10:00
parent dd9a9113ba
commit 83c30de44a
Signed by: mig5
GPG key ID: 03906B4110AAD3B8
8 changed files with 340 additions and 14 deletions

View file

@ -6,4 +6,4 @@ uglyURLs = true
disableKinds = ["taxonomy", "term", "RSS", "sitemap"] disableKinds = ["taxonomy", "term", "RSS", "sitemap"]
[params] [params]
description = "Enroll inspects Debian-like and RedHat-like Linux hosts and generates Ansible roles/playbooks from what it finds. Harvest → Manifest → Manage." description = "Enroll inspects Debian-like and RedHat-like Linux hosts and generates Ansible, Puppet, or Salt manifests from what it finds. Harvest → Manifest → Manage."

View file

@ -117,6 +117,14 @@
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
"group": {
"minLength": 1,
"type": "string"
},
"section": {
"minLength": 1,
"type": "string"
},
"version": { "version": {
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
@ -364,6 +372,12 @@
}, },
"type": "array" "type": "array"
}, },
"section": {
"type": [
"string",
"null"
]
},
"version": { "version": {
"type": [ "type": [
"string", "string",
@ -390,6 +404,16 @@
"package": { "package": {
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
},
"has_config": {
"type": "boolean",
"default": true
},
"section": {
"type": [
"string",
"null"
]
} }
}, },
"required": [ "required": [
@ -571,6 +595,21 @@
"$ref": "#/$defs/UserEntry" "$ref": "#/$defs/UserEntry"
}, },
"type": "array" "type": "array"
},
"user_flatpaks": {
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/$defs/FlatpakInstall"
}
},
"type": "object"
},
"user_flatpak_remotes": {
"type": "array",
"items": {
"$ref": "#/$defs/FlatpakRemote"
}
} }
}, },
"required": [ "required": [
@ -652,6 +691,256 @@
"notes" "notes"
], ],
"type": "object" "type": "object"
},
"SysctlSnapshot": {
"additionalProperties": false,
"properties": {
"role_name": {
"const": "sysctl"
},
"managed_files": {
"items": {
"$ref": "#/$defs/ManagedFile"
},
"type": "array"
},
"parameters": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"notes": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"role_name",
"managed_files",
"parameters",
"notes"
],
"type": "object"
},
"FlatpakInstall": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"enum": [
"system",
"user"
]
},
"remote": {
"type": [
"string",
"null"
]
},
"branch": {
"type": [
"string",
"null"
]
},
"arch": {
"type": [
"string",
"null"
]
},
"kind": {
"type": [
"string",
"null"
],
"enum": [
"app",
"runtime",
null
]
},
"ref": {
"type": [
"string",
"null"
]
},
"user": {
"type": [
"string",
"null"
]
},
"home": {
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"from_url": {
"type": "string",
"minLength": 1
}
},
"required": [
"name",
"method"
],
"type": "object"
},
"FlatpakRemote": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"enum": [
"system",
"user"
]
},
"url": {
"type": "string",
"minLength": 1
},
"user": {
"type": [
"string",
"null"
]
},
"home": {
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
}
},
"required": [
"name",
"method",
"url"
],
"type": "object"
},
"SnapInstall": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"channel": {
"type": [
"string",
"null"
]
},
"revision": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"classic": {
"type": "boolean"
},
"devmode": {
"type": "boolean"
},
"dangerous": {
"type": "boolean"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"source": {
"type": "string"
},
"install_revision": {
"type": "boolean"
}
},
"required": [
"name"
],
"type": "object"
},
"FlatpakSnapshot": {
"additionalProperties": false,
"properties": {
"role_name": {
"const": "flatpak"
},
"system_flatpaks": {
"type": "array",
"items": {
"$ref": "#/$defs/FlatpakInstall"
}
},
"remotes": {
"type": "array",
"items": {
"$ref": "#/$defs/FlatpakRemote"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"role_name"
],
"type": "object"
},
"SnapSnapshot": {
"additionalProperties": false,
"properties": {
"role_name": {
"const": "snap"
},
"system_snaps": {
"type": "array",
"items": {
"$ref": "#/$defs/SnapInstall"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"role_name"
],
"type": "object"
} }
}, },
"$id": "https://enroll.sh/schema/state.schema.json", "$id": "https://enroll.sh/schema/state.schema.json",
@ -762,6 +1051,15 @@
}, },
"firewall_runtime": { "firewall_runtime": {
"$ref": "#/$defs/FirewallRuntimeSnapshot" "$ref": "#/$defs/FirewallRuntimeSnapshot"
},
"sysctl": {
"$ref": "#/$defs/SysctlSnapshot"
},
"flatpak": {
"$ref": "#/$defs/FlatpakSnapshot"
},
"snap": {
"$ref": "#/$defs/SnapSnapshot"
} }
}, },
"required": [ "required": [

View file

@ -0,0 +1,19 @@
{{ define "main" }}
{{ .Content | safeHTML }}
<main class="py-5">
<div class="container">
<div class="row g-4">
{{ range .Pages.ByDate.Reverse }}
<div class="col-lg-6">
<article class="feature-card p-4 h-100">
<div class="small text-secondary mb-2">{{ .Date.Format "2 January 2006" }}</div>
<h2 class="h4 fw-bold mb-2"><a class="link-dark text-decoration-none" href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
{{ with .Params.summary }}<p class="text-secondary">{{ . }}</p>{{ end }}
<a class="btn btn-sm btn-outline-dark" href="{{ .RelPermalink }}">Read more</a>
</article>
</div>
{{ end }}
</div>
</div>
</main>
{{ end }}

View file

@ -0,0 +1,3 @@
{{ define "main" }}
{{ .Content | safeHTML }}
{{ end }}

View file

@ -3,12 +3,14 @@
<div class="row g-4 align-items-start"> <div class="row g-4 align-items-start">
<div class="col-lg-6"> <div class="col-lg-6">
<div class="d-flex align-items-center gap-2 mb-2"> <div class="d-flex align-items-center gap-2 mb-2">
<img class="brand-mark" src="assets/img/enroll.svg" alt="Enroll"> <img class="brand-mark" src="{{ "assets/img/enroll.svg" | relURL }}" alt="Enroll">
<div class="fw-bold">Enroll (a mig5 project)</div> <div class="fw-bold">Enroll (a mig5 project)</div>
<span class="badge badge-soft rounded-pill">CLI</span> <span class="badge badge-soft rounded-pill">CLI</span>
<span class="badge badge-soft rounded-pill">Ansible</span> <span class="badge badge-soft rounded-pill">Ansible</span>
<span class="badge badge-soft rounded-pill">Puppet</span>
<span class="badge badge-soft rounded-pill">Salt</span>
</div> </div>
<div class="text-secondary mb-3">Reverse-engineering servers into Ansible.</div> <div class="text-secondary mb-3">Reverse-engineering servers into Ansible, Puppet, or Salt.</div>
<div class="d-flex flex-wrap gap-2"> <div class="d-flex flex-wrap gap-2">
<a class="btn btn-sm btn-outline-dark" href="https://git.mig5.net/mig5/enroll" target="_blank" rel="noreferrer"> <a class="btn btn-sm btn-outline-dark" href="https://git.mig5.net/mig5/enroll" target="_blank" rel="noreferrer">
@ -26,10 +28,11 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="fw-semibold mb-2">Site</div> <div class="fw-semibold mb-2">Site</div>
<ul class="list-unstyled small mb-0"> <ul class="list-unstyled small mb-0">
<li><a class="link-secondary text-decoration-none" href="docs.html">Docs</a></li> <li><a class="link-secondary text-decoration-none" href="{{ "docs.html" | relURL }}">Docs</a></li>
<li><a class="link-secondary text-decoration-none" href="examples.html">Examples</a></li> <li><a class="link-secondary text-decoration-none" href="{{ "examples.html" | relURL }}">Examples</a></li>
<li><a class="link-secondary text-decoration-none" href="schema.html">Schema</a></li> <li><a class="link-secondary text-decoration-none" href="{{ "news.html" | relURL }}">News</a></li>
<li><a class="link-secondary text-decoration-none" href="security.html">Security Design</a></li> <li><a class="link-secondary text-decoration-none" href="{{ "schema.html" | relURL }}">Schema</a></li>
<li><a class="link-secondary text-decoration-none" href="{{ "security.html" | relURL }}">Security Design</a></li>
</ul> </ul>
</div> </div>

View file

@ -21,4 +21,4 @@
<!-- Bootstrap --> <!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<link href="assets/css/site.css" rel="stylesheet"> <link href="{{ "assets/css/site.css" | relURL }}" rel="stylesheet">

View file

@ -1,7 +1,7 @@
<nav class="navbar navbar-expand-lg bg-white bg-opacity-75 sticky-top border-bottom" data-bs-theme="light"> <nav class="navbar navbar-expand-lg bg-white bg-opacity-75 sticky-top border-bottom" data-bs-theme="light">
<div class="container py-1"> <div class="container py-1">
<a class="navbar-brand fw-bold d-flex align-items-center gap-2" href="index.html"> <a class="navbar-brand fw-bold d-flex align-items-center gap-2" href="{{ "index.html" | relURL }}">
<img class="brand-mark" src="assets/img/enroll.svg" alt="Enroll"> <img class="brand-mark" src="{{ "assets/img/enroll.svg" | relURL }}" alt="Enroll">
<span>Enroll</span> <span>Enroll</span>
</a> </a>
@ -13,13 +13,16 @@
<div class="collapse navbar-collapse" id="nav"> <div class="collapse navbar-collapse" id="nav">
<ul class="navbar-nav ms-auto align-items-lg-center gap-lg-2"> <ul class="navbar-nav ms-auto align-items-lg-center gap-lg-2">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="docs.html">Docs</a> <a class="nav-link" href="{{ "docs.html" | relURL }}">Docs</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="examples.html">Examples</a> <a class="nav-link" href="{{ "examples.html" | relURL }}">Examples</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="security.html">Security Design</a> <a class="nav-link" href="{{ "news.html" | relURL }}">News</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ "security.html" | relURL }}">Security Design</a>
</li> </li>
<li class="nav-item ms-lg-2"> <li class="nav-item ms-lg-2">

View file

@ -5,4 +5,4 @@
})(); })();
</script> </script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/site.js"></script> <script src="{{ "assets/js/site.js" | relURL }}"></script>