尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Fleet 4.54.0 深度解析:通过标签排除精准定向主机、可配置的脚本执行超时与 arm64 支持

Fleet 4.54.0 深度解析:通过标签排除精准定向主机、可配置的脚本执行超时与 arm64 支持 Fleet 4.54.0 深度解析通过标签排除精准定向主机、可配置的脚本执行超时与 arm64 支持【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleetFleet 4.54.02024 年 7 月发布聚焦于提升设备管理的精细化与自动化运维能力新增基于标签排除label exclusion的主机定向能力让管理员可以精确地把某个配置、策略或软件部署排除到特定标签组的主机之外同时将远程脚本执行超时从固定值改为可通过 agent options 配置默认 300 秒、最大 18000 秒配合fleetctl run-script的轮询机制为 Homebrew、Installomator、Chocolatey 等长耗时软件部署脚本留出充足执行窗口。本文以该版本发布说明为骨架结合仓库源码与配置文档逐项讲解新能力的用法、配置方法与底层实现。版本亮点概览Fleet 4.54.0 的核心变化集中在两大块标签排除label exclusion在面向主机管理配置描述文件configuration profiles时新增labels_exclude_any定向语义配合原有的labels_include_all、labels_include_any实现排除命中指定标签的主机的精准控制。远程脚本执行超时可配置新增script_execution_timeoutagent option默认 300 秒、上限 18000 秒5 小时用于支撑更长的软件部署与日志收集工作流。此外该版本还包含 iOS/iPadOS 内置手动标签、SCEP 证书续期、fleetctl多项 CLI 改进以及大量 bug 修复。发布说明全文可参见 articles/fleet-4.54.0.md完整的改动列表见仓库根目录的 CHANGELOG.md。标签排除更精细的主机定向能力为什么需要排除语义在 4.54.0 之前向主机定向下发配置时只能采用包含语义指定标签只有命中这些标签的主机才会收到配置。但在真实 IT 场景中管理员更常遇到的是除了某批设备之外其余设备都要下发的反向需求。发布说明给出的典型场景是会议室电脑conference room computers一家公司希望给绝大多数设备下发某个特定配置例如新的网络代理设置或屏幕超时策略但会议室里的共享电脑不应受影响。此时排除语义比维护一份包含名单简单得多——管理员只需要创建一个会议室电脑标签然后在配置下发时排除该标签即可无需随着新设备加入而持续维护包含名单。三种定向模式的语义根据 docs/Configuration/yaml-files.md 中configuration_profiles一节的说明4.54.0 起每个配置描述文件macOS/iOS/iPadOS 的 .mobileconfig/.jsonWindows 的 .xml都可以指定以下三种定向字段之一字段语义说明labels_include_all主机必须拥有全部列出的标签原有labels字段的别名用于精准圈定labels_include_any主机拥有任一列出的标签命中任意一个即可labels_exclude_any主机不拥有任何列出的标签4.54.0 新增用于排除约束三个字段互斥只能指定其中一个如果都不指定则面向全部主机all hosts are targeted。源码中的实现在 server/fleet/apple_mdm.go 中MDMAppleConfigProfile结构体同时承载三个定向字段LabelsIncludeAll []ConfigurationProfileLabel db:- json:labels_include_all,omitempty LabelsIncludeAny []ConfigurationProfileLabel db:- json:labels_include_any,omitempty LabelsExcludeAny []ConfigurationProfileLabel db:- json:labels_exclude_any,omitempty标签与配置描述文件之间是多对多关系由ConfigurationProfileLabel表示其中Exclude bool与RequireAll bool两个字段server/fleet/apple_mdm.go在数据库层面记录该标签是包含还是排除以及是否要求全部命中用于在同一个表中表达三种定向模式。发布说明还提到 4.54.0 加入了数据库迁移为 MDM 配置描述文件以及 DDM declarations关联的标签新增exclude列profile reconciliation 逻辑也同步更新以处理新的 exclude any 标签——也就是说主机收到配置的判定、以及配置被移除/更新的对账流程都会把排除标签纳入计算。在 GitOps 与 YAML 文件中使用通过fleetctl gitops或fleetctl apply应用 GitOps 配置时可以在configuration_profiles条目中直接声明排除标签。参考 docs/Configuration/yaml-files.md 中软件包部分的写法同一语法也适用于 profiles一个典型的 GitOps 片段如下# lib/software/santa.package.yml - url: https://github.com/example/santa/releases/download/2026.2/santa-2026.2.pkg install_script: path: ../lib/software/santa-install-script.sh self_service: true labels_exclude_any: - IT test team # 属于 IT test team 标签的主机不会被安装 - url: https://github.com/example/santa/releases/download/2026.4/santa-2026.4.pkg install_script: path: ../lib/software/santa-install-script.sh categories: - Productivity labels_include_all: - IT test team # 只面向 IT test team 标签的主机对于配置描述文件语法类似mdm: apple_settings: configuration_profiles: - path: ../lib/macos/profiles/conference-room.mobileconfig labels_exclude_any: - conference-roomAPI 层面向主机下发 profiles 的请求体同样支持这三个字段labels_include_all、labels_include_any、labels_exclude_any数组内容为标签名详见 docs/Contributing/reference/api-for-contributors.mdlabels旧字段被保留为labels_include_all的别名保证向后兼容。UI 上则新增了上传自定义 profile 时按 include all / exclude any 标签定向主机的能力。可配置的脚本执行超时面向长耗时运维任务默认值与上限4.54.0 将远程脚本执行超时从固定值改为可配置。在 server/fleet/agent_options.go 中const maxAgentScriptExecutionTimeout 18000 type AgentOptions struct { // ScriptExecutionTimeout is the maximum time in seconds that a script can run. ScriptExecutionTimeout int json:script_execution_timeout,omitempty ... }默认值300秒5 分钟最大值18000秒5 小时校验逻辑位于ValidateJSONAgentOptionsserver/fleet/agent_options.go当配置值超过上限时会直接报错提示script_execution_timeout value exceeds limit. Maximum value is 18000防止误配置导致不可预期的行为。配置方法通过 agent options 在全局或团队层面设置超时docs/Configuration/agent-configuration.mdagent_options: script_execution_timeout: 600 # 单位秒此处为 10 分钟发布说明指出这一扩展使得管理员可以执行更长、更复杂的脚本而不被打断典型场景包括通过Homebrew、Installomator、Chocolatey等包管理器部署大型软件更新大规模日志收集操作双向数据传输类工作流需要长时间保持脚本进程存活。fleetctl run-script 的轮询机制脚本超时上限提高后一次fleetctl调用的等待时长可能远超从前。为此 4.54.0 让fleetctl在运行run-script时改用轮询机制polling不再单次长连接等待结果而是周期性查询脚本执行状态从而适应更长的脚本超时值避免客户端连接在超时前被切断。同时脚本详情弹窗在脚本超时时的错误提示也改为展示动态的超时上限值而非写死的旧值。配套的脚本权限收紧与更长超时配套的是更严格的执行权限。4.54.0 更新了脚本运行权限只有 Admin 和 Maintainer 角色可以运行任意脚本或保存的脚本Observer 与 Observer 不再具备该能力。UI 上对 Global/Team Observer 及其以上角色隐藏了主机详情页的 Run script 操作Query 删除复选框对团队 Observer 隐藏Observer/Observer 也不再被允许下载软件安装器。这些改动共同收敛了高权限操作面避免超长脚本执行能力被低权限角色滥用。端点运维Endpoint Operations相关改进fleetctl gitops支持团队重命名用 YAML 配置应用团队变更时如果配置文件与之前同名团队名称会被更新。注意fleetctl gitops需要先在 Fleet/fleetctl 4.54.0 或更高版本上运行过该能力才可用。fleetctl query --hosts支持主机名、主机 UUID 与硬件序列号定位目标主机不再局限于单一标识符。主机详情页与 API 返回即将到来的维护窗口如果主机在调度表上有即将到来的 scheduled maintenance window会在 UI 主机详情页与 API 主机响应中展示。fleetctl debug connection增强支持用 fleetctl 可执行文件中内嵌的 certs.pem 测试 TLS 连接并修复了对带中间证书的服务器 TLS 证书的支持。日历事件描述包含主机 display name维护窗口等日历事件更易识别归属设备。fleetctl apply增加 .yml/.yaml 文件类型校验非法的文件扩展名会得到明确报错。UI 细节文本被截断时显示 tooltip未截断的值不显示。MDM 与设备管理改进iOS/iPadOS 标签与 OS 版本聚合新增iOS/iPadOS 内置手动标签。升级注意事项迁移到 4.54.0 之前请务必删除任何名为 iOS 或 iPadOS 的已有标签避免与内置标签冲突。新增iOS/iPadOS OS 版本聚合aggregation便于在仪表盘上整体查看移动设备系统分布。iOS/iPadOS 自定义 profile 的状态流转从pending直接进入verified跳过中间的verifying缩短配置生效确认链路。证书与 fleetd 自动安装支持自定义 enrollment profile 的 SCEP 证书续期。主机开启 MDM 时自动安装的fleetd现在使用最新发布的 fleetd 版本。Windows MSI 安装包新增END_USER_EMAIL与FLEET_DESKTOP参数支持。macOS 的fleetd清理脚本与卸载脚本从 Fleet 运行时都会返回 completed 状态脚本执行状态上报更准确。API 与 CLI 相关fleetctl gitops/fleetctl apply支持为自定义设置配置labels_include_all与labels_exclude_any。fleetctl get mdm_commands默认返回 20 行并支持--host与--type过滤器显著改善大环境下的响应时间。API 不再因主机发送了无效 command uuid 的命令响应而返回 500。上传软件安装器的 endpoint 超时提高到 4 分钟。其他 MDM 修复Windows lock 时禁用凭据缓存与重启。修复 macOS declarations 长时间停留在 to be removed 状态的问题。修复 Windows MSI 安装器中installer_utils.ps1 -uninstallOrbit步骤因注册表HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall键中含特殊字符而失败的问题fleetdWindows 安装器遇到含特殊字符的注册表键时崩溃的问题也已修复。漏洞管理改进主机详情页的软件表新增Vulnerable存在漏洞过滤器快速筛出存在已知漏洞的软件条目。修复Microsoft Office 2024 年 6 月漏洞的漏报false negative并新增自定义漏洞匹配能力。修复部分 Windows 应用被错误匹配到 Windows OS 漏洞的问题组件/产品归属判定更准确。其他修复与改进精选Go 版本升级到 go1.22.4。My device 页面按优先级只渲染一个 banner。修复 macOS 主机经 MDM 重新注册后Added to Fleet被错误置为Never的问题。恢复按 passing count 对策略排序的能力。改进判断主机是否通过 MDM 接入 Fleet 的启发式算法对未发送 Checkout 消息的主机改用 osquery 数据进行判定。改进pkg安装器与既有软件的匹配、以及从pkg安装器中提取应用名的准确性。修复导出含逗号字段的 CSV 时渲染异常的问题。修复 No Team OS 版本数量显示错误、低磁盘空间主机计数错误等问题。修复脚本详情弹窗在脚本超时时显示过时错误文案的问题现改为动态超时上限。升级建议升级到 4.54.0 前请特别留意两点删除名为 iOS / iPadOS 的既有标签该版本新增同名内置手动标签不删除会冲突。团队重命名依赖新版本先运行一次fleetctl gitops的团队重命名能力要求 Fleet/fleetctl 已用 4.54.0 或更新版本运行过一次fleetctl gitops。完整的逐项改动与升级指引可查阅 articles/fleet-4.54.0.md 及仓库根目录 CHANGELOG.md。关于 agent options 的完整字段说明见 docs/Configuration/agent-configuration.mdGitOps YAML 语法见 docs/Configuration/yaml-files.md。【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表