构建功能
功能是一个命名的构建模块。它的注册表项可以声明一个或多个发行版系列的包,还可能包括构建挂钩、别名、功能元数据和来宾断言。
添加功能表达了意图。它本身并不能证明每个包都是可用的,每个钩子都运行过,或者结果行为在目标图像上有效。配方验证、构建完成和访客验证是单独的门。
查找当前的功能集
在已部署的 OpenFactory 版本中使用功能选择器或功能目录 API。该输出对于正在运行的版本具有权威性。静态列表很快就会过时,并且某些注册表项会被隐藏,因为它们支持内部固定装置或不完整的集成。
在选择功能之前,请检查:
- 它是否对您的帐户可见并启用;
- 是否声明配方发行系列的包;
- 其外部来源是否固定且可检索;
- 是否有断言来证明您需要的行为;和
- 是否与另一个请求的模块冲突。
代表类别
该注册表当前包含以下类别的模块:
| 类别 | 示例 | 需要的证据 |
|---|---|---|
| 桌面 | desktop-kde、desktop-gnome-minimal、krita、kdenlive | 会话类型、已安装的软件包、启动器行为和真实的桌面冒烟测试 |
| 命令行和开发 | git、curl、python、nodejs、rust | 包/版本清单和可执行冒烟测试 |
| 基础设施 | nginx、postgresql、redis、docker、ansible | 服务配置、启用/运行状态、端口和应用程序级运行状况 |
| 安全 | firewall、audit-logging、security-hardening、apparmor | 生成的策略、活动运行时状态、负面测试和记录的异常 |
| 合规为本 | cis-benchmarks、gxp、disa-stig、nist-800-53 | 准确的基准/控制来源、适用性、每个控制结果和人性化 |
| 人工智能工具 | ollama、alpaca、aider、codex-cli | 固定源/包来源、模型下载边界、启动测试和资源需求 |
这些示例不是兼容性矩阵。功能名称可以存在,而特定的分发实现仍然是部分的。
功能、套餐和服务不同
os.features选择已注册的构建模块。os.packages向本机包管理器询问特定包。os.services提供命名的启用和配置意图。
例如:
{
"os": {
"features": ["ssh", "firewall"],
"packages": ["curl", "jq"],
"services": [
{
"name": "ssh",
"enabled": true,
"config": {
"port": 22,
"disable_password_auth": true
}
}
]
}
}有效的服务配置仍然可以包含生成器不使用的密钥。检查标准化配方并测试生成的来宾。
安全和合规标签
security-hardening 安装并配置通用强化基线。它不是 CIS 配置文件的同义词。配方的hardening_level是由特定于目标的生成器解释的配置标签;它不是 CIS 1 级或 2 级的认证或通用映射。
cis-benchmarks 功能具有更具体的 Ubuntu 24.04 1 级修复路径。其他基地不承担同样的角色。请参阅CIS 基准证据 了解确切的边界。
同样,启用以 GxP、HIPAA、SOC 2、PCI DSS、NIST 或 DISA 命名的功能并不能建立组织合规性。它可以添加包、配置和测试,为单独管理的评估提供证据。
安全地组合功能
- 从表达所请求行为的最小集合开始。
- 验证配方并检查规范化输出中是否存在丢弃或推断的字段。 3.审查扩展包和挂钩计划。
- 构建一次并遵循其持久构建 ID。
- 在引导的客户机中运行特定于功能的断言。
- 明确记录故障和故意的异常情况。
- 仅在了解当前基线后添加另一个功能。
有关规范的 JSON 形状,请参阅食谱架构。